我有一个dockerfile,我用来将基于python flask的微服务容器化,它基于这个基本docker映像:
https://github.com/tiangolo/uwsgi-nginx-flask-docker
在我的dockerfile中,我添加了一个自定义
nginx.conf
并覆盖nginx:
FROM tiangolo/uwsgi-nginx-flask:python3.6
ADD nginx.conf nginx.conf
COPY ./app /app
COPY ./data /app/data
COPY nginx.conf /etc/nginx/conf.d/
我的习惯
nginx.conf文件
只包括一个零钱-一个零钱
server_name
我准备了一个自定义域名:
server {
listen 80;
location / {
try_files $uri @app;
}
location @app {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
location /static {
alias /app/static;
}
server_name my-fully-qualified-domain-name.com;
}
原因是我想运行让我们加密
certbot
实用程序强制nginx仅在容器内为ssl。
问题是:
Docker拒绝覆盖
nginx.conf文件
. 它几乎拒绝把我尝试的任何东西
/etc/nginx/conf.d/
.
或者是码头工人
做
覆盖它,但nginx中的某些内容在开始时(在容器开始时)覆盖
我的
变化。我还没弄清楚,但我真的很想把它打倒
nginx.conf文件
用我自己的改变。
甚至附加到容器并手动覆盖nginx的配置,然后使用
docker commit
失败。我怀疑有件事我不明白Docker是怎么做到的
COPY
命令有效或如何
Docker提交
工作-有什么想法/建议吗?
注1
-我没法习惯
服务器名称
现场工作
认证机器人
使用单独的nginx配置文件(根据
these instructions
)我唯一能得到的
认证机器人
去接右边的
服务器名称
已通过删除并覆盖默认值
nginx.conf文件
因此采用这种方法。也许我只是错误地使用了自定义的nginx配置文件——任何关于这个注释的建议都会非常感谢——但是我以前就已经走上了这条路,而且没有成功。
注2
-我能跑了
认证机器人
在一
正在运行
容器(在附加和覆盖nginx的配置之后),这很好——在我的容器上使用ssl,太棒了——直到容器停止并重新启动。然后全部清除,我需要覆盖nginx的配置和运行
认证机器人
再说一遍-一点也不理想。