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

问题描述 投票:4回答:2

我有一个用于开发的docker-compose设置,我需要复制相同的文件以进行生产或登台。

[目前,除了volumesportsenvironment,我不确定要为生产/环境更改“设置”哪些设置。

澄清:

  • 我必须更改volumes,因为我通常将USB驱动器安装到我的Docker容器中,例如:d:/var/www
  • ports的问题是,因为可能还有其他服务在本地计算机上使用端口80,所以我可能需要更改它。
  • [environment当然对于prod / dev ..(主要是身份验证和数据库访问)是不同的]

任何其他提示都会很高兴。

docker docker-compose dockerfile docker-machine container-image
2个回答
3
投票

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

网络

默认网络可能不适用于您的产品环境。例如,您的运营团队可能会决定将nginx / php-fpm / mariadb放在不同的网络中,例如以下示例(https://docs.docker.com/compose/networking/#specify-custom-networks),甚至使用预先存在的网络

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设置/主机名/域配置可能不同

正在记录

考虑哪种日志记录驱动程序可能最适合您的需求。从here

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"

1
投票

您应遵循Use Compose in production documentation

您可能需要更改您的应用配置才能进行准备生产。这些更改可能包括:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.