【发布时间】:2020-05-10 17:30:00
【问题描述】:
我正在运行一个 dockerized django 应用程序。我将它部署在 EC2 上。 Nginx 也在一个 docker 容器中。我的 docker-container 中的 Nginx 已配置为使用 Lets Encrypt 的 ssl 证书。
Lets Encrypt 证书的有效期仅为 90 天,这就是我设置 cronjob 来更新它们的原因。
我现在的问题是:我在 docker 容器中运行的 nginx 会自动使用更新后的文件吗?还是我需要再次启动我的 docker 容器并重新构建它以使更改生效?在后一种情况下,是否可以告诉 nginx 使用更新的文件,这样我就不必重建我的容器?我问这个问题是因为我想尽量减少我的应用程序的停机时间。
为了更清楚,我提供了我的配置。重要的文件是引用的 ssl 证书:
server {
listen 443 ssl;
server_name mydomain;
charset utf-8;
ssl_stapling off;
ssl_stapling_verify off;
ssl_certificate /etc/letsencrypt/live/mydomain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain/privkey.pem;
location / {
proxy_pass http://django:5000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这是我的撰写文件:
production-nginx-container:
container_name: 'production-nginx-container'
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- /home/ubuntu/nginx-conf/myconf.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt/live/mydomain/fullchain.pem:/etc/letsencrypt/live/mydomain/fullchain.pem
- /etc/letsencrypt/live/mydomain/privkey.pem:/etc/letsencrypt/live/mydomain/privkey.pem
depends_on:
- django
我只能看到两个选项:要么 nginx 在我的 docker 容器运行时保持这个文件一直打开,要么不保持。
如果它保持打开状态,我假设我需要重新启动我不想要的 docker 容器:)。
如果有任何意见,我将不胜感激!提前致谢!
【问题讨论】:
标签: django docker nginx docker-compose