Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Nginx在docker重新启动后不工作策略=始终_Django_Nginx_Docker Compose - Fatal编程技术网

Django Nginx在docker重新启动后不工作策略=始终

Django Nginx在docker重新启动后不工作策略=始终,django,nginx,docker-compose,Django,Nginx,Docker Compose,我的团队正在使用Docker Compose为Django web应用程序提供服务。我们有一个容器通过Gunicorn web服务器为Django服务,另一个容器是使用Nginx的第一个容器的反向http代理(它还提供静态文件) 我们正在尝试实施docker的“始终”重启策略。问题是: 在重新启动后(或在关闭docker引擎并将其重新启动后),当我们在浏览器中访问网页时,会看到“ERR\u EMPTY\u RESPONSE localhost未发送任何数据”错误。快速的“docker compo

我的团队正在使用Docker Compose为Django web应用程序提供服务。我们有一个容器通过Gunicorn web服务器为Django服务,另一个容器是使用Nginx的第一个容器的反向http代理(它还提供静态文件)

我们正在尝试实施docker的“始终”重启策略。问题是:

在重新启动后(或在关闭docker引擎并将其重新启动后),当我们在浏览器中访问网页时,会看到“ERR\u EMPTY\u RESPONSE localhost未发送任何数据”错误。快速的“docker compose ps”显示两个容器都在运行,尽管没有按预期工作。但是,当我们执行“docker compose restart”时,一切都按预期进行

我一直在检查我们的设置,试图定位问题,我所知道的是,在docker自动重启Nginx容器之后,它是Nginx容器的一个问题。我将主机上的一个端口映射到我们的Gunicorn容器,我可以访问Gunicorn容器,该容器在自动重启后按预期工作。因此,通过消除过程,它一定是Nginx容器的问题

是我们的docker-compose.yml文件

是Gunicorn Dockerfile

是我们的Nginx配置文件


是否有人对这个问题的原因有任何见解?或者更好,一个解决方案?寻找想法。谢谢

我的服务前面有一个Nginx代理,所有其他服务在重新启动后都可以重新启动,但是
Nginx代理
不会重新启动。我正在为它使用
docker compose
文件。为了解决这个问题,我在
/etc/systemd/system
中创建了一个名为
nginx proxy container.service
systemd
服务文件,如下所示

Description=NGinx Proxy App
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
Restart=always
ExecStartPre=-/usr/local/bin/docker-compose -f /path/to/docker-compose.yml down
ExecStart=/usr/local/bin/docker-compose -f /path/to/docker-compose.yml up -d

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start nginx-proxy-container.service
# this start container when OS restarts
sudo systemctl enable nginx-proxy-container.service 
然后我重新加载deamon配置,并像下面那样启动它

Description=NGinx Proxy App
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
Restart=always
ExecStartPre=-/usr/local/bin/docker-compose -f /path/to/docker-compose.yml down
ExecStart=/usr/local/bin/docker-compose -f /path/to/docker-compose.yml up -d

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start nginx-proxy-container.service
# this start container when OS restarts
sudo systemctl enable nginx-proxy-container.service 
若你们正在寻找纯粹的Docker解决方案,请看看这个项目


希望这有帮助

github上的一个问题正好描述了您的问题:

此链接表示docker engine 1.4存在问题。这是 在更高版本中修复


Docker的版本是什么?虽然这个链接可以回答这个问题,但最好在这里包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-@天哪,我重写了抽象并突出显示了它。希望现在更清楚了。