正在尝试从pgAdmin4连接到postgresDB。两者都通过docker compose进行竞争,并处于同一网络中
backend-db-prod
启动脚本
docker compose --env-file ./.docker/.db.env --env-file ./.docker/.pgadmin.env -f ./.docker/compose.db.yaml up --build --wait
compose.db-env.yaml
version: '3.8'
networks:
postgres-pg-admin-net:
driver: bridge
volumes:
db-data:
pgadmin-data:
compose.db.yaml
version: "3.8"
include:
- ./compose.db-env.yaml
services:
db-prod:
container_name: backend-db-prod
deploy:
resources:
limits:
cpus: "1"
memory: 4G
env_file: ./.db.env
environment:
POSTGRES_DB: ${POSTGRES_DB:-db}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
image: postgres:16.1-alpine3.18
networks:
- postgres-pg-admin-net
platform: linux/amd64
ports:
- ${POSTGRES_PORT}:5432
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data/
- ./.postgresql.conf:/etc/postgresql.conf
pgadmin:
container_name: pgadmin
deploy:
resources:
limits:
cpus: "0.5"
memory: 1G
depends_on:
- db-prod
image: dpage/pgadmin4:7.4
env_file: ./.pgadmin.env
environment:
MASTER_PASSWORD_REQUIRED: ${MASTER_PASSWORD_REQUIRED:-False}
PGADMIN_CONFIG_SERVER_MODE: ${PGADMIN_CONFIG_SERVER_MODE:-False}
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:[email protected]}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
volumes:
- pgadmin-data:/var/lib/pgadmin
- ./.pgadmin.servers.json:/pgadmin4/servers.json
platform: linux/amd64
ports:
- 5050:80
restart: unless-stopped
networks:
- postgres-pg-admin-net
.db.env
POSTGRES_CONTAINER_NAME=backend-db-dev
POSTGRES_DB=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_PORT=5432
POSTGRES_USER=postgres
.pgadmin.dev
MASTER_PASSWORD_REQUIRED=False
PGADMIN_CONFIG_SERVER_MODE=False
PGADMIN_DE[email protected]
PGADMIN_DEFAULT_PASSWORD=admin
.pgadmin.servers.json
-在pgAdmin4中预先配置服务器列表的文件,im使用docker提供的网络名称别名进行设置
Host
{
"Servers": {
"main": {
"Name": "main",
"Group": "Servers",
"Port": 5432,
"Username": "postgres",
"Host": "backend-db-dev",
"SSLMode": "prefer",
"MaintenanceDB": "postgres"
}
}
}
当容器被构建时,我试图从pgAdmin4连接到postgres的DB,并得到这个
这是数据库连接设置:
在这里,您可以看到容器在docker网络中的别名:
问题:
如何正确建立连接?我做错了什么?