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

时间:2017-03-11 11:58:51

标签: docker docker-compose docker-swarm

我正在使用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镜像会很方便。
  • 复制PHP图像或Nginx图像中的代码?

哪个是最佳选择?

1 个答案:

答案 0 :(得分:0)

源代码的维护应独立于docker映像的维护。通过将包含源代码的docker映像推送到注册表中,仅维护源代码,您的第一个选择似乎是将两者混合在一起。

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

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

相关问题