Docker部署pgAdmin 4无法登录问题求助
Docker部署pgAdmin 4登录失败问题解决
问题描述
使用Docker Compose部署pgAdmin 4后,遇到登录异常:
- 使用配置的默认邮箱
admin@admin.com登录时,提示「用户名或密码错误」 - 使用其他账号登录时,提示「邮箱/用户名无效」
- 尝试通过
admin@mailhog.local进行密码恢复,同样提示「用户名或密码错误」
用户提供的compose.yml配置:
services: back: container_name: blog-django build: ./blog-master command: gunicorn blog.wsgi:application --bind 0.0.0.0:8000 expose: - 8000 links: - db volumes: - blog-django:/usr/src/app/ - blog-static:/usr/src/app/static - blog-media:/usr/src/app/media env_file: ./.env depends_on: db: condition: service_healthy nginx: container_name: blog-nginx build: ./nginx/ ports: - "1337:80" volumes: - blog-static:/usr/src/app/static - blog-media:/usr/src/app/media links: - back depends_on: - back db: container_name: db image: postgres:14 restart: always expose: - "5432" environment: POSTGRES_DB: docker POSTGRES_USER: docker POSTGRES_PASSWORD: docker ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data/ healthcheck: test: ["CMD-SHELL", "pg_isready -U docker"] interval: 5s timeout: 5s retries: 5 pgadmin: image: dpage/pgadmin4 container_name: pgadmin restart: always ports: - "5050:80" environment: PGADMIN_DEFAULT_EMAIL: admin@admin.com PGADMIN_DEFAULT_PASSWORD: root volumes: - pgadmin-data:/var/lib/pgadmin depends_on: - db links: - db mailhog: container_name: mailhog image: mailhog/mailhog #logging: # driver: 'none' # disable saving logs expose: - 1025 ports: - 1025:1025 # smtp server - 8025:8025 # web ui volumes: blog-django: blog-static: blog-media: pgdata: pgadmin-data:
用户的.env配置:
DEBUG=1 SECRET_KEY='a key' DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] SQL_ENGINE=django.db.backends.postgresql SQL_DATABASE=docker SQL_USER=docker SQL_PASSWORD=docker SQL_HOST=db SQL_PORT=5432 DATABASE=postgres
解决步骤
1. 清除pgAdmin持久化数据卷(最常见解决方法)
pgAdmin首次启动时,会将默认账号信息写入pgadmin-data卷中,后续修改PGADMIN_DEFAULT_EMAIL或PGADMIN_DEFAULT_PASSWORD环境变量不会覆盖已有数据,导致登录验证失败。需要删除该卷并重新初始化:
# 停止并移除pgadmin容器 docker-compose stop pgadmin docker-compose rm -f pgadmin # 查看当前项目的pgadmin-data卷名称(格式通常为[项目目录名]_pgadmin-data) docker volume ls # 删除对应的数据卷 docker volume rm [你的项目卷名]_pgadmin-data # 重新启动pgadmin容器 docker-compose up -d pgadmin
2. 验证环境变量是否正确加载
进入pgadmin容器,检查环境变量是否正常传递:
docker exec -it pgadmin env | grep PGADMIN_
确认输出包含PGADMIN_DEFAULT_EMAIL=admin@admin.com和PGADMIN_DEFAULT_PASSWORD=root,若缺失需检查compose.yml中pgadmin服务的环境变量配置是否正确。
3. 排查容器启动日志
查看pgadmin容器的启动日志,检查是否存在初始化错误:
docker logs pgadmin
若日志中出现权限错误或初始化失败信息,可尝试删除pgadmin-data卷后重新启动(步骤1已覆盖此场景)。
4. 移除过时的links配置(可选优化)
Docker Compose的links属于旧特性,当前版本通过默认网络即可实现服务间通信,可删除pgadmin服务中的links: - db配置,避免潜在兼容性问题。
内容的提问来源于stack exchange,提问作者Misha
相关产品推荐
相关产品推荐

