4

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

volumes ports目前,除了environment我不太确定“可能需要”为生产/环境更改哪些设置。

澄清:

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

任何更多的提示会很高兴知道。

4

2 回答 2

3

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

网络

默认网络可能不适用于您的 prod 环境。例如,您的运维团队可能决定将 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

与 for 相同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"
于 2018-10-19T20:03:16.067 回答
1

您应该遵循在生产文档中使用 Compose

您可能需要更改您的应用配置以使其准备好投入生产。这些变化可能包括:

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

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

于 2018-10-16T14:44:12.177 回答