Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web应用程序docker swarm将源代码放在哪里?_Docker_Docker Compose_Docker Swarm - Fatal编程技术网

Web应用程序docker swarm将源代码放在哪里?

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_

我正在使用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_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"
卷数:
应用程序数据:
正如您所看到的,我使用自己的私有注册表来存储应用程序映像。我的问题是我应该把我的代码源放在哪里

我看到两种选择:

  • 新服务
    app
    (基于busybox映像?)将成为一个仅数据的容器。然后我可以将代码源映像推送到我的注册表并进行部署。可以方便地使用带有标记源代码的Docker映像
  • 在PHP映像或Nginx映像中复制代码

哪个是最好的选择?

源代码的维护应该独立于docker映像的维护。通过将包含源代码的docker映像推入注册表,仅为了维护源代码,您的第一个选项似乎将两者混合在一起

将源代码保存在VCS(版本控制系统)上。当代码准备好分发时,使用该代码构建docker映像。如果映像可以直接从VCS访问源代码,那么总体维护就会更少

您可以探索多阶段docker构建,其中可以创建连接到VCS的临时容器,提取适当的代码并在必要时构建它。然后,最终映像只从临时容器复制构建过程的结果,而不需要对VCS进行不必要的访问