首页  >  文章  >  后端开发  >  将 postgres 与 docker 和 django 连接

将 postgres 与 docker 和 django 连接

王林
王林原创
2024-08-08 15:36:021337浏览

Connect postgres with docker and django

要将 PostgreSQL 与 Docker 和 Django 连接,请按照以下步骤操作:

  1. 设置 Docker 和 Docker Compose:
    确保您的计算机上安装了 Docker 和 Docker Compose。

  2. 创建 Docker Compose 文件:
    创建 docker-compose.yml 文件来定义 Django 和 PostgreSQL 的服务。

version: '3.8'

services:
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
    volumes:
      - postgres_data:/var/lib/postgresql/data

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

volumes:
  postgres_data:
  1. 为 Django 创建 Dockerfile: 在 Django 项目根目录中创建一个 Dockerfile。
# Use the official Python image from the Docker Hub
FROM python:3.9

# Set the working directory in the container
WORKDIR /code

# Copy the requirements file into the container
COPY requirements.txt /code/

# Install the dependencies
RUN pip install -r requirements.txt

# Copy the rest of the application code into the container
COPY . /code/
  1. 配置 Django 使用 PostgreSQL: 更新 Django 项目中的 settings.py 以使用 PostgreSQL。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'db',
        'PORT': '5432',
    }
}
  1. 安装依赖项: 确保您的requirements.txt 包含必要的依赖项。
Django>=3.2,<4.0
psycopg2-binary>=2.8,<3.0
  1. 运行 Docker Compose: 使用 Docker Compose 构建和运行容器。
docker-compose up --build
  1. 迁移数据库: 容器运行后,应用迁移来设置 PostgreSQL 数据库。
docker-compose exec web python manage.py migrate
  1. 创建超级用户(可选): 创建 Django 超级用户来访问管理面板。
docker-compose exec web python manage.py createsuperuser

现在,您应该有一个连接到 PostgreSQL 数据库的工作 Django 应用程序,两者都在 Docker 容器中运行。您可以通过 http://localhost:8000 访问您的应用程序。

以上是将 postgres 与 docker 和 django 连接的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn