首页  >  文章  >  后端开发  >  如何在部署期间在 Docker Compose 中执行单执行命令?

如何在部署期间在 Docker Compose 中执行单执行命令?

Linda Hamilton
Linda Hamilton原创
2024-11-08 18:57:02468浏览

How to Execute a Single-Execution Command in Docker Compose During Deployment?

在 Docker Compose 中运行单执行命令

为了使用 Docker Compose 高效部署 Go Web 服务器,您可能会遇到障碍在部署期间尝试仅执行一次命令时。这个特定的命令 ./my-project -setup 仅在项目编译后才需要运行,以将基本信息添加到数据库中。

Docker Compose 没有为这种需求提供直接的解决方案,但您可以通过向容器引入入口点脚本来规避它。在此脚本中,您可以执行检查来验证数据库是否已初始化,如果没有,则继续执行所需的步骤。

需要注意的是,Docker Compose 中容器启动的顺序是不一致。这意味着应用程序容器可能会在数据库容器之前启动,从而可能导致数据库不准确。入口点脚本应该考虑这种可能性并进行相应调整。

例如,您可以从官方 WordPress 图像的方法中汲取灵感。该镜像使用入口点脚本尝试建立与数据库的连接,并根据连接状态执行必要的初始化过程:https://github.com/docker-library/wordpress/blob/df190dc9c5752fd09317d836bd2bdcd09ee379a5/apache/docker-entrypoint .sh#L146-L171.

此外,您可以通过消除使用“仅数据容器”来安装卷来简化 Docker Compose 配置。从 Docker 1.9 开始,Docker 支持卷管理,包括命名卷。这允许您排除仅数据容器并相应地修改 Mongo 服务配置:

mongo:
    image: mongo:latest
    volumes:
      - mongodata:/data/db
    ports:
      - "28001:27017"
    command: --smallfiles --rest --auth

此修改将创建或重用名为“mongodata”的卷。要列出或删除卷,请使用命令 dockervolume ls 和 dockervolume rm ;分别。

以上是如何在部署期间在 Docker Compose 中执行单执行命令?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn