如何将 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/
将Postgres和pgAdmin容器化:
- 在包含 Django 项目目录的根文件夹中创建 postgres_docker 目录。
- 进入 postgres_docker 目录,并创建一个 docker-compose 文件,用于包含Postgres和pgAdmin镜像:复制以下代码并将其粘贴到您的 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:
- 打开命令行,进入 postgres_docker 目录,然后运行
docker-compose up
此命令用于构建、(重新)创建、启动和连接到服务的容器。要确认是否没有错误,请访问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
- 请将以下图片中的设置输入到您的 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'
}
}
为了验证一切是否按计划进行,请按如下方式启动您的 Django 应用程序:
python manage.py runserver
如果一切正常,您应该可以看到应用程序没有错误信息。
请访问http://localhost:8000
总之,实现这个目标的方法有很多,但这是我比较喜欢的方法,而且也比较容易理解。
如果你在设置过程中遇到任何问题,请在下方留言。
请关注我并开启通知。谢谢!祝你
编程愉快!✌