Django应用程序退出以生成多阶段构建映像

时间:2020-03-26 08:46:30

标签: docker docker-compose docker-multi-stage-build

我试图分多个阶段构建docker映像。我的应用程序起床后立即退出

我的Dockerfile:

################# Builder #####################
FROM python:3.6 AS dependencies
COPY ./requirements.txt requirements.txt
RUN pip install --upgrade pip
RUN pip install --user -r requirements.txt

################# Release #####################
FROM python:3.6-alpine AS release

WORKDIR /src/
COPY . /src

COPY --from=dependencies /root/.local /root/.local/

COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
RUN mv /src/wait-for /bin/wait-for
RUN chmod +x /bin/wait-for

ENV PATH=/root/.local/bin:$PATH

ENTRYPOINT [ "/entrypoint.sh" ]

我的docker-compose:

version: '3.4'
services:
    django_app:
        build: ./app
        command: sh -c "wait-for db:5432 && python manage.py collectstatic --no-input && python manage.py runserver 0.0.0.0:8000"
        ports:
            - "8000:8000"
        env_file:
            - ./.env
        volumes:
            - ./app:/src/
        restart: on-failure
    db:
         image: postgres:9.6
         volumes:
              - postgres_data:/var/lib/postgresql/data/
         environment:
             - POSTGRES_USER=${POSTGRESQL_DB_USER}
             - POSTGRES_PASSWORD=${POSTGRESQL_DB_PASSWORD}
             - POSTGRES_DB=${POSTGRESQL_DB_NAME}
         ports:
           - 5432:5432
         restart: on-failure

entrypoint.sh

#! /bin/sh

cd /src/ || exit

# Run migrations
echo "RUNNING MIGRATIONS" && python manage.py migrate

# echo "COLLECT STATIC" && python manage.py collectstatic --noinput

exec "$@"

如果我在单阶段构建中使用django映像,则一切正常。在这里无法理解问题。

0 个答案:

没有答案