发布于 2026-01-06 0 阅读
0

如何将 Django 应用连接到 Docker 化的 PostgreSQL 和 pgAdmin

如何将 Django 应用连接到 Docker 化的 PostgreSQL 和 pgAdmin

Docker 一直是我部署大多数 Web 项目的默认环境配置方案。它轻量级,而且由于它能在不同的服务器上提供一致的环境,帮助我解决了软件包依赖和环境配置问题,也让持续交付和部署变得轻松愉快。

最近,我需要将我的 Django 应用连接到 Docker 化的 Postgres 数据库,并使用 Docker 化的 pgAdmin(一个用于管理 Postgres 数据库的 Web 应用)来管理该数据库。

我这样做是因为我希望我的应用层能够独立于数据库的 Docker 环境之外,而无需为了快速搭建应用原型而在本地机器上安装 Postgres 和 pgAdmin。
在成功配置并运行之前,我遇到了不少问题。
让我来展示一下我是如何做到的😊。

本文假设您已成功安装 Docker 和 Django。我还会使用 docker-compose(它可以让您运行多个容器)。您可以
访问此链接了解 docker-compose 的相关信息:https://docs.docker.com/compose/

PostgrespgAdmin容器化:

  • 在包含 Django 项目目录的根文件夹中创建 postgres_docker 目录。
  • 进入 postgres_docker 目录,并创建一个 docker-compose 文件,用于包含PostgrespgAdmin镜像:复制以下代码并将其粘贴到您的 docker-compose 文件中。
version: "3.1"

services:

  db:
    restart: always
    image: postgres
    container_name: demo-postgres #you can change this
    environment:
      - POSTGRES_USER=demo
      - POSTGRES_PASS=demo
      - POSTGRES_DB=demo
      - POSTGRES_PORT=5432
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data/

  pgadmin:
      image: dpage/pgadmin4
      container_name: demo-pgadmin #you can change this
      depends_on:
        - db
      ports:
        - "5051:80"
      environment:
        PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
        PGADMIN_DEFAULT_PASSWORD: root
      restart: always


volumes:
  postgres_data:

Enter fullscreen mode Exit fullscreen mode
  • 打开命令行,进入 postgres_docker 目录,然后运行
docker-compose up
Enter fullscreen mode Exit fullscreen mode

此命令用于构建、(重新)创建、启动和连接到服务的容器。要确认是否没有错误,请访问http://localhost:5051查看 pgAdmin 界面。

将pgAdmin连接Postgres

  • 使用您在 docker-compose 文件中初始化的登录详细信息登录 pgAdmin。
 PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org #you can change this
 PGADMIN_DEFAULT_PASSWORD: root #you can change this
Enter fullscreen mode Exit fullscreen mode
  • 请将以下图片中的设置输入到您的 pgAdmin 界面中。图片替代文字 图片替代文字 请注意
  • 你的主机名db是 docker-compose 文件中 Postgres 服务的名称。

将Django连接Postgres

  • 在 settings.py 文件中,按如下方式配置数据库设置:
DATABASES = {
    'default': {
        'ENGINE': 'django_postgres_extensions.backends.postgresql',
        'NAME': 'demo',
        'USER': 'demo',
        'HOST': 'localhost',
        'PORT': 5432,
        'PASSWORD':'demo'
    }
}

Enter fullscreen mode Exit fullscreen mode

为了验证一切是否按计划进行,请按如下方式启动您的 Django 应用程序:

python manage.py runserver
Enter fullscreen mode Exit fullscreen mode

如果一切正常,您应该可以看到应用程序没有错误信息。
请访问http://localhost:8000

总之,实现这个目标的方法有很多,但这是我比较喜欢的方法,而且也比较容易理解。
如果你在设置过程中遇到任何问题,请在下方留言。
请关注我并开启通知。谢谢!祝你
编程愉快!✌

文章来源:https://dev.to/mojemoron/how-to-connect-your-django-app-to-a-dockerized-postgresql-and-pgadmin-133o