我觉得配置环境有问题,包括 postgres、pgadmin 和 nginx。所有这些服务都在 docker 容器中,这是我的 docker-compose 文件:
version: '3'
services:
postgres:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
pgadmin:
links:
- postgres:postgres
image: dpage/pgadmin4:3.0
environment:
PGADMIN_DEFAULT_EMAIL: 'postgres@pg.com'
PGADMIN_DEFAULT_PASSWORD: 'postgres'
ports:
- "5050:80"
restart: unless-stopped
nginx:
links:
- pgadmin:pgadmin
image: "nginx:1.13.12"
ports:
- "80:80"
volumes:
- ./nginxServers/server:/etc/nginx/conf.d/default.conf
这是我的
nginx.conf
, 置于 ./nginxServers/server
:server {
listen 80;
server_name _;
location /pgadmin/ {
proxy_pass http://pgadmin/;
}
}
如您所见,这是一个非常简单的设置,允许我通过 http://localhost/pgadmin 使用 pgadmin .
不幸的是,这行不通。我可以通过 http://127.0.0.1:5050 看到 pgadmin Web 界面,但是当我导航到 http://127.0.0.1/pgadmin ,所有的样式和脚本都没有加载。
我还尝试了 nginx 配置中的另一个位置:
location /pgadmin {
proxy_pass http://pgadmin;
}
但这也没有帮助。
因此,我坚持正确配置 nginx 作为 pgadmin 的反向代理。
附言正如我在谷歌上搜索的那样,这个问题可能与提供 django 静态内容有关,但由于我不熟悉 django,我无法找到任何解决方法。
对于这个奇怪问题的任何帮助,我将不胜感激。
最佳答案
可能你已经解决了。但问题是 nginx 解析主机名的方式。出于性能原因,它只执行一次。强制nginx动态搜索ip,只需要在nginx配置中添加Docker解析器即可
http {
resolver 127.0.0.11 ipv6=off;
}
见底部:docker dns server
关于django - 在 docker 容器中使用 pgadmin 和 nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043844/