为生产和开发创建单独的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"
我已经阅读了文件,第二点和第五点有点含糊不清,文件一点也不全面,这就是我提出这个问题的原因