一百:

FROM python:3.9
ENV PYTHONUNBUFFERED=1
RUN apt-get update && apt-get upgrade -y  \
&& apt-get install -y gcc gunicorn3 libcurl4-gnutls-dev librtmp-dev libnss3 libnss3-dev wget \
&& apt-get clean \
&& apt -f install -y

WORKDIR /App

COPY requirements.txt /App/
RUN pip install -r requirements.txt
COPY . /App/
>! RUN pip install django~=4.1.1

RUN mkdir -p /App/data/db/
RUN chown -R 1000:1000 /App/data/db/

EXPOSE 7000
EXPOSE 8001

我有base-compose个包含数据库映像文件,以下是文件内容:

version: '3.3'

networks:
  shared_network:
   driver: bridge

services:
  testdb:
    image: postgres:latest
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=develop_db
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    ports:
      - "5432:5432"
    networks:
      - shared_network

volumes:
  postgres_data:

这是我的docker-compose文件:

version: '3.3'

include:
  - ./base-compose.yml

services:
  test_develop:
    container_name: test_develop
    build: .
    command: python manage.py runserver 0.0.0.0:7000
    ports:
      - "7000:7000"
    env_file:
      - ./environments/.env.develop
    depends_on:
      - testdb
    networks:
      - shared_network
    links:
      - testdb

以下是我的docker-compose-prod.yml文件:

version: '3.3'

include:
  - ./base-compose.yml

services:
  test_production:
    container_name: test_production
    build: .
    command: python manage.py runserver 0.0.0.0:8001
    ports:
      - "8001:8001"
    env_file:
      - ./environments/.env.prod
    depends_on:
      - testdb
    networks:
      - shared_network
    links:
      - testdb

当我运行docker-compose up --build时,它会创建develop_db,但我也想创建prod_db.

当docker-compose up--Build时,我try 创建两个数据库名称Development_db和Prod_db.

我使用这两个命令运行了两个docker-compose文件.

docker-compose -f docker-compose up --build
docker-compose -f docker-compose-prod.yml up --build

推荐答案

我刚刚创建了init.sql个文件,并将其添加到docker-entrypoint-init.db中,这就是我所做的.最好是创建psql个文件夹,并在其中添加init.sql个文件.

从base-compose文件中删除- POSTGRES_DB=develop_db个并更改它.

version: '3.3'

networks:
  shared_network:
   driver: bridge

services:
  testdb:
    image: postgres:latest
    volumes:
      - postgres_data:/var/lib/postgresql/data
      # add here 
      - ./psql/init.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    ports:
      - "5432:5432"
    networks:
      - shared_network

volumes:
  postgres_data:

这是我的init.sql%档案.我刚刚创建了DATABASE,只需确保您使用USERPASSWORD创建DATABASE.

-- Creation of DATABASE

CREATE DATABASE test_db;
CREATE DATABASE test_prod_db;

[enter image description here enter image description here enter image description here enter image description here

Django相关问答推荐

如何在Django中将字段及其数据从一个模型添加到另一个模型?

Django ORM Groupby

在模板中自动添加变量

如何在Django CMS中更新上下文

通过 B 的外键列表访问模型 B 的行

django.template.response.ContentNotRenderedError: 必须渲染响应内容才能迭代

当从 fastapi 发送请求时,Django 无法对 Postgres 执行查询

Django 按月分组并按月显示在模板中

Playframework 和 Django

Django:想要将一个空字段显示为空白而不是显示无

Django Blob 模型字段

Django 基于角色的视图?

如何获取 Django 模型来自的应用程序?

是否可以将 FastAPI 与 Django 一起使用?

django 模板 if 或语句

现在如何在 Django 中处理每个对象的权限?

如何在字段集中显示 Django 管理内联模型?

Django REST Framework - 序列化可选字段

AUTH_USER_MODEL 指的是尚未安装和创建的模型 .. AbstractUser 模型无法登录

在 Django 单元测试中使用 mock 修补 celery 任务