部署docker-compose容器
我正在尝试部署使用docker-compose构建的应用程序,但是感觉好像我朝着完全错误的方向前进。
- 我的一切工作都在本地
docker-compose up
进行-通过适当的网络和主机启动我的应用程序。 - 我希望能够在生产机器上运行容器和网络的相同配置,而只是使用不同的
.env
文件。
我当前的工作流程如下所示:
docker save [web image] [db image] > containers.tarzip deploy.zip containers.tar docker-compose.yml
rsync deploy.zip user@server
ssh user@server
unzip deploy.zip ./
docker load -i containers.tar
docker-compose up
在这一点上,我希望docker-compose up
当它们到达那里时能够再次运行,但这试图根据docker-compose.yml
文件重建容器。
我有一种明显的失落感。我是否应该通过完整的应用程序进行交付,然后在服务器上构建映像?如果要从注册表存储/加载图像,如何开始组成容器?
回答:
问题是我在开发和生产中使用了相同的docker-compose.yml文件。
应用程序服务未指定存储库名称或标签,因此当我docker-compose
up在服务器上运行时,它只是尝试在应用程序的源代码目录(服务器上不存在)中构建Dockerfile。
我最终通过在本地docker-compose.yml中添加显式图像字段解决了问题。
version: '2'services:
web:
image: 'my-private-docker-registry:latest'
build: ./app
然后创建用于生产的替代撰写文件:
version: '2'services:
web:
image: 'my-private-docker-registry:latest'
# no build field!
在docker-compose build
本地运行后,将使用存储库名称my-private-docker-
registry和标记构建Web服务映像latest
。
这只是将映像推送到存储库的一种情况。
docker push 'my-private-docker-registry:latest'
在运行时docker pull
,可以安全地停止并使用新映像重新创建正在运行的容器。
以上是 部署docker-compose容器 的全部内容, 来源链接: utcz.com/qa/405776.html