Web应用程序docker swarm将源代码放在哪里?
我正在使用Docker和Docker compose进行PHP-FPM/Nginx/Mariadb应用程序开发。 我现在想在Docker swarm和Docker compose v3的生产中使用它(通过Docker stack.yml) 我的docker堆栈文件如下所示:Web应用程序docker swarm将源代码放在哪里?,docker,docker-compose,docker-swarm,Docker,Docker Compose,Docker Swarm,我正在使用Docker和Docker compose进行PHP-FPM/Nginx/Mariadb应用程序开发。 我现在想在Docker swarm和Docker compose v3的生产中使用它(通过Docker stack.yml) 我的docker堆栈文件如下所示: version: "3" services: db: image: mariadb environment: MYSQL_ROOT_PASSWORD: root MYSQL_
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:
版本:“3”
服务:
db:
图片:mariadb
环境:
MYSQL\u ROOT\u密码:ROOT
MYSQL_数据库:应用程序
php:
图像:/php
卷数:
-应用程序数据:/var/www/app
部署:
副本:2份
nginx:
图像:/nginx
取决于:
-php
卷数:
-应用程序数据:/var/www/app
部署:
副本:2份
端口:
- "80:80"
卷数:
应用程序数据:
正如您所看到的,我使用自己的私有注册表来存储应用程序映像。我的问题是我应该把我的代码源放在哪里
我看到两种选择:
- 新服务
(基于busybox映像?)将成为一个仅数据的容器。然后我可以将代码源映像推送到我的注册表并进行部署。可以方便地使用带有标记源代码的Docker映像app
- 在PHP映像或Nginx映像中复制代码李>
哪个是最好的选择?源代码的维护应该独立于docker映像的维护。通过将包含源代码的docker映像推入注册表,仅为了维护源代码,您的第一个选项似乎将两者混合在一起 将源代码保存在VCS(版本控制系统)上。当代码准备好分发时,使用该代码构建docker映像。如果映像可以直接从VCS访问源代码,那么总体维护就会更少 您可以探索多阶段docker构建,其中可以创建连接到VCS的临时容器,提取适当的代码并在必要时构建它。然后,最终映像只从临时容器复制构建过程的结果,而不需要对VCS进行不必要的访问