gpt4 book ai didi

postgresql - 将 pgadmin 连接到 docker 中的 postgres

转载 作者:行者123 更新时间:2023-11-29 12:07:43 31 4
gpt4 key购买 nike

我有一个 docker-compose 文件,其中包含 pythonnginxpostgres 的服务pgadmin:

services:
postgres:
image: postgres:9.6
env_file: .env
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5431:5431"

pgadmin:
image: dpage/pgadmin4
links:
- postgres
depends_on:
- postgres
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: pwdpwd
volumes:
- pgadmin:/root/.pgadmin
ports:
- "5050:80"

backend:
build:
context: ./foobar # This refs a Dockerfile with Python and Django requirements
command: ["/wait-for-it.sh", "postgres:5431", "--", "/gunicorn.sh"]
volumes:
- staticfiles_root:/foobar/static
depends_on:
- postgres

nginx:
build:
context: ./foobar/docker/nginx
volumes:
- staticfiles_root:/foobar/static
depends_on:
- backend
ports:
- "0.0.0.0:80:80"

volumes:
postgres_data:
staticfiles_root:
pgadmin:

当我运行 docker-compose up 并访问 localhost:5050 时,我看到了 pgadmin 界面。当我尝试在那里创建一个新服务器时,使用 localhost0.0.0.0 作为主机名,使用 5431 作为端口,我得到一个错误“无法连接到服务器”。如果我删除这些并在“服务”字段中输入 postgres,我会收到错误“找不到服务定义”postgres。如何使用 pgadmin 连接到数据库?

最佳答案

当您运行 docker-compose 以作为文件夹名称前缀(以保持容器名称唯一)时,docker 容器名称会更改。您可以使用 container_name 属性强制容器的名称

version: "3"
services:

# postgres database
postgres:
image: postgres:12.3
container_name: postgres
environment:
- POSTGRES_DB=admin
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=admin
- POSTGRES_HOST_AUTH_METHOD=trust # allow all connections without a password. This is *not* recommended for prod
volumes:
- database-data:/var/lib/postgresql/data/ # persist data even if container shuts down
ports:
- "5432:5432"

# pgadmin for managing postgis db (runs at localhost:5050)
# To add the above postgres server to pgadmin, use hostname as defined by docker: 'postgres'
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin
environment:
- PGADMIN_DEFAULT_EMAIL=admin
- PGADMIN_DEFAULT_PASSWORD=admin
- PGADMIN_LISTEN_PORT=5050
ports:
- "5050:5050"

volumes:
database-data:

另一种选择是将 postgres 容器连接到本地主机

网络模式:主机

但是这样你就失去了与 docker 良好的网络隔离

关于postgresql - 将 pgadmin 连接到 docker 中的 postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53266285/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com