Docker компилирует файл Python в Dockerfile - PullRequest
0 голосов
/ 26 октября 2019

Я хотел бы создать образ докера из моего приложения django, но я не хочу извлекать мой файл .py.

Для этого мне нужен способ скомпилировать мой файл Python в Docker, а затем удалить все* .py и оставил только * .pyc файл.

Если я просто напишу **/*.py в файл .dokerignore, я получу ошибку

ImportError: неверное магическое число в'ajaxfuncs': b '\ x03 \ xf3 \ r \ n'

, поскольку мой исходный файл * .py был скомпилирован с другой версией python (локальный докер python3.6.0 для python3.6 для alpine)

В качестве обходного пути я бы собрал свой файл python в dockerfile, а затем удалил все py

Сначала в свой файл .dockerignorefile я положил: ** / *. Pyc

Затем вМой Dockerfile думает использовать python -m py_compile для генерации моих новых * .pyc файлов:

FROM python:3.6-alpine
EXPOSE 8000
RUN apk update
RUN apk add --no-cache make linux-headers libffi-dev jpeg-dev zlib-dev
RUN apk add postgresql-dev gcc python3-dev musl-dev
RUN mkdir /Code
WORKDIR /Code
COPY ./requirements.txt .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ENV PYTHONUNBUFFERED 1

COPY . /Code/

RUN python -m py_compile /Code/ajaxfuncs/ajax.py /Code/ajaxfuncs/asktempl.py /Code/ajaxfuncs/group.py /Code/ajaxfuncs/history.py /Code/ajaxfuncs/template_import.py

RUN rm -rf /Code/ajaxfuncs/*.py
ENTRYPOINT python /Code/core/manage.py runserver 0.0.0.0:8000

, но когда я запускаю свое приложение, кажется, что компилятор не компилирует мои файлы, потому что pyc не был найден.

Если я удаляю запись pyc в .dockerignore, я снова получаю ошибку:

ImportError: bad magic число в 'ajaxfuncs': b '\ x03 \ xf3 \ r \ n'

Кто-нибудь знает, как я могу скомпилировать файл python во время создания контейнера Docker или другой способ избежать файла * .py вконтейнер?

Огромное спасибо заранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...