【发布时间】:2018-10-31 15:33:00
【问题描述】:
我通常使用简单的生产映像组合来管理我的生产部署,因此完全依赖 docker-compose。
我没有使用 Kubernetes 或其他工具,因为我想让我的简单应用程序保持简单(我不部署在多个主机上、管理负载平衡或执行 CD/CI)
这是我的作品组合的样子:
version: '3'
services:
php:
image: ${CONTAINER_REGISTRY_BASE}/php:${VERSION}
depends_on:
- db
env_file:
- ./api.env
api:
image: ${CONTAINER_REGISTRY_BASE}/api:${VERSION}
depends_on:
- php
- db
db:
image: mariadb:10.2
client:
image: ${CONTAINER_REGISTRY_BASE}/client-prod:${VERSION}
env_file:
- ./client.env
admin:
image: ${CONTAINER_REGISTRY_BASE}/admin-prod:${VERSION}
env_file:
- ./admin.env
在.env 文件中为应用程序堆栈保留一个全局版本,当我更新此版本时,我只需要这样做:
docker-compose build
docker-compose push
在生产服务器中(更新版本后)
docker-compose up -d
正如您可以想象的那样,问题是我要交付整个堆栈,即使其中一项服务有非常小的修改。
我曾考虑为每个服务设置不同的版本,但维护起来似乎相当复杂,因为我们无法确定每个服务的最新版本是什么。
我看错了吗?我不应该在生产中使用 docker-compose 吗?在这种情况下我应该使用什么?
有人可以建议我一种基于 docker 注册表的简单部署方式吗?
【问题讨论】:
标签: docker deployment docker-compose