django - 在 docker 容器中使用 pgadmin 和 nginx
问题描述
我觉得配置环境有问题,包括 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 网络界面,但是当我导航到http://127.0.0.1/pgadmin时,所有样式和脚本都没有加载。
我还尝试了 nginx 配置中的另一个位置:
location /pgadmin {
proxy_pass http://pgadmin;
}
但这也无济于事。
因此,我坚持正确配置 nginx 作为 pgadmin 的反向代理。
PS 正如我用谷歌搜索的那样,这个问题可能与提供 django 静态内容有关,但由于我不熟悉 django,我无法找到任何解决方法。
对于这个奇怪问题的任何帮助,我将不胜感激。
解决方案
可能你已经解决了。但问题是 nginx 解析主机名的方式。出于性能原因,它只执行一次。要强制 nginx 动态搜索 ip,只需在 nginx 配置中添加 Docker 解析器即可
http {
resolver 127.0.0.11 ipv6=off;
}
推荐阅读
- javascript - 使用外部 javascript 显示当前年份
- python - 用一段时间将文本写入终端
- docker - php_network_getaddresses 上的 Docker:getaddrinfo failed 错误建议运行 mysql_upgrade 。但是没有这样的命令
- javascript - 将 jQuery 上下文菜单绑定到选择选项
- android - Firebase Cloud Messaging 主题被忽略,所有用户不断收到通知
- c++ - CGAL:使用 facet 访问的顶点错误
- firebase - 如何使用 nodemailer 发送邮件而不会收到错误 500
- python - 关于正则表达式未按预期执行的问题
- javascript - vueJS对嵌套表行进行排序
- php - Typo3 8.7 itemsProcFunc 不修改现有项目