You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:35:36