gpt4 book ai didi

python - 如何使docker build运行python manage.py migration

转载 作者:行者123 更新时间:2023-12-02 19:21:12 25 4
gpt4 key购买 nike

我是Docker的新手,正尝试在Django中使用它,这是我的 DockerFile :

FROM python:3.6

RUN mkdir /app
WORKDIR /app

ADD . /app/


ENV PYTHONUNBUFFERED 1
ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive


ENV PORT=8000


RUN apt-get update && apt-get install -y --no-install-recommends \
tzdata \
python3-setuptools \
python3-pip \
python3-dev \
python3-venv \
git \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*




RUN pip3 install --upgrade pip
RUN pip3 install pipenv


RUN pip install -r requirements.txt && python manage.py migrate



EXPOSE 8888
CMD gunicorn g_attend.wsgi:application --bind 0.0.0.0:$PORT

它可以正常工作,但从不进行迁移,有什么帮助吗?

注意如果问题是初学者问题,请原谅我,这是我第一次使用docker,找不到关于Docker / Django的清晰文档

最佳答案

首先,您不应在自定义Dockerfile中运行迁移。一个好的做法是创建entrypoint.sh

这是示例入口点文件:

#!/bin/bash

set -e

echo "${0}: running migrations."
python manage.py makemigrations --merge
python manage.py migrate --noinput

echo "${0}: collecting statics."

python manage.py collectstatic --noinput

cp -rv static/* static_shared/

gunicorn yourapp.wsgi:application \
--env DJANGO_SETTINGS_MODULE=yourapp.production_settings \
--name yourapp \
--bind 0.0.0.0:8000 \
--timeout 600 \
--workers 4 \
--log-level=info \
--reload

另外,我建议使用docker-compose,这有助于在一个地方组织部署。

例:
version: '3'
web:
build:
context: .
dockerfile: Dockerfile
command:
- /bin/sh
- '-c'
- '/code/entrypoint.sh'
ports:
- '8000:8000'
volumes:
- '.:/code'
- 'media_volume:/media'

和示例Dockerfile
FROM python:3.6.8

RUN apt-get update;

ENV PYTHONUNBUFFERED 1
RUN mkdir /code

ADD requirements.txt /code
ADD entrypoint.sh /code

WORKDIR /code

RUN chmod +x *.sh

RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /code

关于python - 如何使docker build运行python manage.py migration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59568111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com