为生产和开发创建单独的docker compose配置

为生产和开发创建单独的docker compose配置,docker,docker-compose,dockerfile,docker-machine,container-image,Docker,Docker Compose,Dockerfile,Docker Machine,Container Image,我有一个用于开发的docker compose设置,我需要复制相同的文件用于生产或暂存 目前,除了卷端口和环境之外,我不太确定生产/环境“可能需要”更改哪些设置 澄清: 我必须更改卷,因为我通常在docker容器中安装USB驱动器,例如:d:/var/www 端口的问题是,因为在我的本地计算机上可能有其他服务使用端口80,所以我可能需要更改它 环境当然与prod/dev不同。。(主要是身份验证和数据库访问) 如果还有更多的建议,我很高兴知道 您应该遵循以下步骤: 您可能需要对应用程序配置进行

我有一个用于开发的
docker compose
设置,我需要复制相同的文件用于生产或暂存

目前,除了
端口
环境
之外,我不太确定生产/环境“可能需要”更改哪些设置

澄清:

  • 我必须更改
    ,因为我通常在docker容器中安装USB驱动器,例如:
    d:/var/www
  • 端口的问题是,因为在我的本地计算机上可能有其他服务使用端口80,所以我可能需要更改它
    
  • 环境
    当然与prod/dev不同。。(主要是身份验证和数据库访问)
如果还有更多的建议,我很高兴知道

您应该遵循以下步骤:

您可能需要对应用程序配置进行更改才能实现此目的 准备生产。这些变化可能包括:

  • 删除应用程序代码的任何卷绑定,以便代码保留在容器内,并且不能从外部更改
  • 绑定到主机上的不同端口
  • 以不同的方式设置环境变量,例如当需要减少日志记录的详细程度或启用电子邮件发送时)
  • 指定重新启动策略,如
    restart:always
    ,以避免停机

  • 添加额外的服务,如日志聚合器


确切的列表将取决于您的环境/ops团队要求,但除了端口/现有卷之外,这似乎也是有用的:

网络

默认网络可能不适用于prod环境。 例如,您的ops团队可能会决定将nginx/php fpm/mariadb放在不同的网络上,如下面的示例()中所示,或者甚至使用预先存在的网络

Mysql配置

它们通常位于单独的目录中,即
/etc/my.cnf
/etc/my.cnf.d
。 prod/dev之间的这些配置可能不同。 在卷路径中看不到它

Php-fpm7

没有使用过
php-fpm7
,但在
php-fpm5
中,它还有一个不同的文件夹,其中包含卷中缺少的配置文件(
/etc/php fpm.conf
/etc/php fpm.d
)。一旦您处理了中等负载,这些文件也可能会有所不同(您需要配置工作人员/超时的数量等)

Nginx

与php fpm相同,ssl设置/主机名/域配置可能不同

日志记录

考虑哪种日志驱动程序最适合您的需要。 发件人:

Docker包括多个日志记录机制来帮助您 来自运行容器和服务的信息。这些机制是 称为日志驱动程序

您可以在docker compose中轻松配置它,下面是一个示例,提供一个专用的
fluentd
容器用于日志记录:

version: "3"

services:
  randolog:
    image: golang
    command: go run /usr/src/randolog/main.go
    volumes:
      - ./randolog/:/usr/src/randolog/
    logging:
      driver: fluentd
      options:
        fluentd-address: "localhost:24224"
        tag: "docker.{{.ID}}"

  fluentd:
    build:
      context: ./fluentd/
    ports:
      - "24224:24224"
      - "24224:24224/udp"

我已经阅读了文件,第二点和第五点有点含糊不清,文件一点也不全面,这就是我提出这个问题的原因