首頁  >  文章  >  後端開發  >  將 postgres 與 docker 和 django 連接

將 postgres 與 docker 和 django 連接

王林
王林原創
2024-08-08 15:36:021336瀏覽

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