ฐานข้อมูล Postgres ใน Docker กับ Django? [ซ้ำ]
Nov 26 2020
ตัวอย่างเช่นฉันใช้การตั้งค่า defoult ใน Django
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': '127.0.0.1',
'PORT': '5432',
}
เมื่อเทียบท่าฐานข้อมูลของฉันด้วย
depends_on:
- db
ฉันควรเปลี่ยนเปลี่ยน'HOST'พารามิเตอร์ '127.0.0.1'สำหรับ'db'
คุณช่วยอธิบายกระบวนการนี้ได้ไหม
ขอบคุณล่วงหน้า
คำตอบ
1 AbdulRehmanCh Nov 26 2020 at 02:26
ใช่คุณต้องเปลี่ยนโฮสต์เป็น db คุณยังสามารถใช้ตัวแปรสภาพแวดล้อมในการตั้งค่าของคุณด้านล่าง
DATABASES = {
"default": {
"ENGINE": os.environ.get("SQL_ENGINE"),
"NAME": os.environ.get("SQL_DATABASE"),
"USER": os.environ.get("SQL_USER"),
"PASSWORD": os.environ.get("SQL_PASSWORD"),
"HOST": os.environ.get("SQL_HOST"),
"PORT": os.environ.get("SQL_PORT"),
}
}
และเพิ่มตัวแปรสภาพแวดล้อมเพื่อเขียนเทียบท่าหรือเพิ่ม env_file ด้านล่างนี้คือนักเทียบท่าเขียน
services:
web:
restart: always
build:
context: ./mmd_backend
dockerfile: Dockerfile.prod
command: gunicorn mmd_backend.wsgi:application --bind 0.0.0.0:8000
volumes:
- static_volume:/home/app/web/staticfiles
- media_volume:/home/app/web/mediafiles
expose:
- 8000
env_file:
- ./.env.prod
depends_on:
- db
db:
build: ./pg12-3.0
ports:
- 5436:5432
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./.env.prod.db
nginx:
build: ./nginx
restart: always
volumes:
- static_volume:/home/app/web/staticfiles
- media_volume:/home/app/web/mediafiles
ports:
- 8000:8000
depends_on:
- web
volumes:
postgres_data:
static_volume:
media_volume:
และไฟล์ env ดังต่อไปนี้
#.env
DEBUG=1
SECRET_KEY=7bhlblY8pY
SQL_ENGINE=django.contrib.gis.db.backends.postgis
SQL_DATABASE=db_name
SQL_USER=db_user
SQL_PASSWORD=db_password
SQL_HOST=db
SQL_PORT=5432