Рассмотрите возможность использования многоступенчатой сборки . Используйте первый этап для создания всех необходимых зависимостей и второго этапа для создания окончательного изображения Docker. Просто скопируйте сгенерированные сайты-пакеты (и другие артефакты, если необходимо) со стадии сборки на второй.
Итак, ваш файл Docker может выглядеть так (обратите внимание на два оператора FROM
):
# Build stage:
FROM python:3.6-alpine as build
COPY . /app
WORKDIR /app
RUN apk add --virtual build-deps gcc python-dev musl-dev && \
apk add postgresql-dev
RUN pip install pipenv
RUN pipenv install --system --deploy
# "Default" stage:
FROM python:3.6-alpine
# Copy generated site-packages from former stage:
COPY --from=build /usr/local/lib/python3.6/site-packages/ /usr/local/lib/python3.6/site-packages/
COPY . /app
WORKDIR /app
EXPOSE 5005
ENV FLASK_APP=app/__init__.py
ENV FLASK_RUN_PORT=5005
CMD flask run --host=0.0.0.0
<expr> = NULL
никогда не соответствует действительности, даже если <expr>
равно NULL
. Чтобы проверить, что для NULL
, используйте IS NULL
: <expr> IS NULL
. if()
здесь. Существует специальная функция coalesce()
, которая возвращает первое ненулевое выражение из списка его аргументов.
UPDATE `tracking`
SET `design date` = '2019-01-19',
`design date original` = coalesce(`design date original`,
`start_date`)
WHERE `ID` = 20212;