我hello world用 Django 和 Docker 創建了一個簡單的專案。在末尾Dockerfile有以下命令:
ENTRYPOINT ["/app/web/entrypoint.sh"]
激活此腳本:
#!/bin/sh
echo " ---> DB Connection Parameters: \
DB name: $DB_NAME \
DB host: $DB_HOST \
DB port: $DB_PORT"
poetry run python3 website/manage.py migrate --noinput
poetry run python3 website/manage.py collectstatic --noinput
poetry run python3 website/manage.py createsuperuser --noinput
echo " ---> Django Project Port: $PROJECT_PORT"
poetry run python3 website/manage.py runserver 0.0.0.0:"$PROJECT_PORT"
exec "$@"
專案啟動但未運行遷移,我被迫登錄容器并使用python3 manage.py migrate它開始遷移。
為什么遷移命令不運行并collectstatic自動運行?
在 docker-compose 下方:
version: '3.7'
services:
db:
container_name: dev_db
image: postgis/postgis
restart: always
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USER}
POSTGRES_DB: ${DB_NAME}
volumes:
- db-data:/var/lib/postgresql/data
website:
image: maxdragonheart/${PROJECT_NAME}
build:
context: ./web
dockerfile: Dockerfile
environment:
PROJECT_NAME: ${PROJECT_NAME}
PROJECT_PORT: ${PROJECT_PORT}
SECRET_KEY: ${SECRET_KEY}
DB_ENGINE: ${DB_ENGINE}
DB_NAME: ${DB_NAME}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
DB_PORT: ${DB_PORT}
DB_HOST: ${DB_HOST}
DEBUG: ${DEBUG}
ALLOWED_HOSTS: ${ALLOWED_HOSTS}
container_name: dev_website
restart: always
ports:
- ${PROJECT_PORT}:${PROJECT_PORT}
volumes:
- website-static-folder:/app/web/static-folder
- website-media-folder:/app/web/media-folder
- logs:/app/logs
depends_on:
- db
volumes:
db-data:
website-static-folder:
website-media-folder:
logs:
uj5u.com熱心網友回復:
Dockermanage.py collectstatic --noinput自動運行,您不必為它運行命令。對于自定義命令,您可以嘗試添加:
website:
...
command: bash -c "python3 website/manage.py migrate --noinput &&
python3 website/manage.py createsuperuser --noinput &&
python3 website/manage.py runserver 0.0.0.0:[YOUR PORT]"
...
到你的docker-compose.yml檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/416254.html
標籤:
