【问题标题】:Web application docker swarm where to put source code?Web 应用程序 docker swarm 源代码放在哪里?
【发布时间】:2017-03-11 11:58:51
【问题描述】:

我正在使用 Docker 和 Docker compose 进行 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:

如您所见,我使用自己的私有注册表来存储应用程序图像。我的问题是我在哪里放置我的代码源?

我看到了 2 个选项:

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

哪个是最好的选择?

【问题讨论】:

    标签: docker docker-compose docker-swarm


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      相关资源
      最近更新 更多