Docker:如何管理开发和生产环境设置?

12

我刚开始接触Docker。在我的OSX开发机上(使用Docker Machine作为Docker主机),使用官方的NGINX镜像时,我遇到了与sendfile和VirtualBox相关的错误,这意味着服务器无法显示我对文件所做的更改。

这个问题的解决方法是使用修改后的nginx.conf文件来关闭sendfile. 这位开发者的解决方案在Dockerfile中有一条指令,将自定义的配置文件复制到容器中。另外,这位开发者将NGINX配置映射到一个新文件夹,并使用修改后的conf文件。

这种方法在本地工作得很好。但是如果我在云主机上不需要这个修改怎么办?当涉及到部署时,我应该如何处理这种和其他差异?

1个回答

15

在开发中,你可以通过如下命令将自定义的nginx.conf挂载到容器中:--volume ./nginx/nginx.conf:/etc/nginx/nginx.conf ,并在生产环境下省略此参数。

如果使用docker-compose,我推荐以下两种方法:


谢谢 Evgeny,我会这样做。 - And Finally
你知道如何在docker-compose.yml上实现吗? - Jaime Sangcap
@Daskul 只需在容器的 volumes 定义下添加 - ./nginx/nginx.conf:/etc/nginx/nginx.conf 作为一个条目即可。 - Evgeny Chernyavskiy
是的,我已经有那个了,但是我想在生产环境下更改一些配置。有什么提示可以根据环境更改配置吗? - Jaime Sangcap
1
我知道Docker Compose对环境变量插值的支持有限(https://docs.docker.com/compose/compose-file/#/variable-substitution),所以你可能可以做类似于`./nginx/nginx.${APP_ENV}.conf:/etc/nginx/nginx.conf`的事情。在这里,为生产环境覆盖使用单独的YAML文件也是一个可行的选择:https://docs.docker.com/compose/production/。 - Evgeny Chernyavskiy
非常感谢!正是我所需要的。我认为你可以把它们加到你的答案里。 - Jaime Sangcap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接