在 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中文网其他相关文章!