我正在编写Django Rest API,直到今天我一直在使用venv,直到今天我决定切换到docker环境。而且我无法连接到docker中的数据库。这是docker-compose文件:
version: '3.7'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/usr/src/app/
ports:
- 8000:8000
env_file:
- ./.env.dev
depends_on:
- db
db:
image: postgres:12.0-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=mydatabase
volumes:
postgres_data:
这是.env.dev文件:
SECRET_KEY=its_a_secret
DEBUG=1
SQL_ENGINE=django.db.backends.postgresql_psycopg2
SQL_DATABASE=mydatabase
SQL_USER=postgres
SQL_PASSWORD=postgres
SQL_HOST=db
SQL_PORT=5432
在我的本地环境中。
我的mydatabase在端口5433上的postgres服务器上运行。
这是我的settings.py
中数据库的配置:
DATABASES = {
"default": {
"ENGINE": os.environ.get("SQL_ENGINE", "django.db.backends.sqlite3"),
"NAME": os.environ.get("SQL_DATABASE", os.path.join(BASE_DIR, "db.sqlite3")),
"USER": os.environ.get("SQL_USER", "user"),
"PASSWORD": os.environ.get("SQL_PASSWORD", "password"),
"HOST": os.environ.get("SQL_HOST", "localhost"),
"PORT": os.environ.get("SQL_PORT", "5432"),
}
}