我正在使用Docker和Docker编写PHP-FPM / Nginx / Mariadb应用程序开发。 我现在想用Docker swarm和docker-compose v3(通过docker-stack.yml)在生产中使用它
我的docker-stack文件是这样的:
version: "3"
services:
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: app
php:
image: <MYREGISTRY>/php
volumes:
- app-data:/var/www/app
deploy:
replicas: 2
nginx:
image: <MYREGISTRY>/nginx
depends_on:
- php
volumes:
- app-data:/var/www/app
deploy:
replicas: 2
ports:
- "80:80"
volumes:
app-data:
如您所见,我使用自己的私有注册表来存储应用程序图像。我的问题是我在哪里放置代码源?
我看到两个选项:
app
(基于busybox映像?)是一个仅限数据的容器。然后我可以将代码源图像推送到我的注册表并进行部署。使用带标记的代码源的Docker镜像会很方便。哪个是最佳选择?
答案 0 :(得分:0)
源代码的维护应独立于docker映像的维护。通过将包含源代码的docker映像推送到注册表中,仅维护源代码,您的第一个选择似乎是将两者混合在一起。
将源代码保留在VCS(版本控制系统)上。准备分发代码时,请使用该代码构建docker映像。如果映像可以直接从VCS访问源代码,则总体维护会更少。
您可以探索多阶段docker构建,可以在其中创建连接到VCS的临时容器,提取适当的代码并在必要时构建它。然后,最终映像仅从临时容器复制构建过程的结果,而无需不必要地访问VCS。