Как импортировать самодельный модуль в Docker? - PullRequest
1 голос
/ 27 января 2020

Я пытаюсь запустить проект Docker, который имеет 3 контейнера.

Всякий раз, когда я запускаю

$ docker-compose up --build

, весь процесс идет хорошо, без предупреждения или ошибки на экране.

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

Traceback (most recent call last):
  File "/code/etl_script.py", line 4, in <module>
    from logs.log import log, database_error
ModuleNotFoundError: No module named 'logs.log'

Основные компоненты моей структуры каталогов следующие:

.
+-- crontab
+-- deploy.yml
+-- docker-compose.yml
+-- Dockerfile
+-- elt_script.py
+-- README.md
+-- requirements.txt
+-- logs
|   +-- __init__.py
|   +-- log.py

Когда etl_script. py выполняется, ошибка, о которой я упоминал ранее, записывается в файл журнала. Строка в etl_script.py , которая генерирует сообщение об ошибке:

from logs.log import log, database_error

, а содержимое logs.log.py:

from datetime import datetime

def database_error(error):
    log(error)

def log(message):
    print("[%s] %s" % (datetime.now(), message))

Возможно кто-нибудь помочь мне узнать, что я делаю не так? Я довольно новичок в Docker.

РЕДАКТИРОВАТЬ 1:

Dockerfile:

FROM adoptopenjdk/openjdk12:x86_64-alpine-jre-12.33

RUN apk add --no-cache python3 \
&& python3.6 -m ensurepip \
&& pip3 install --upgrade pip setuptools \
&& rm -r /usr/lib/python*/ensurepip && \
if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
if [[ ! -e /usr/bin/python ]]; then ln -sf /usr/bin/python3 /usr/bin/python; fi && \
rm -r /root/.cache

ENV ENV=${ENV}

WORKDIR /code

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

ADD cogroo4py /code/cogroo4py
RUN python /code/cogroo4py/setup.py install

ENV APP_USER appuser

RUN adduser -g "App User" -D $APP_USER

COPY crontab /var/spool/cron/crontabs/$APP_USER
RUN chmod 0777 /var/spool/cron/crontabs/$APP_USER

ADD . /code

RUN touch /code/cron.log

RUN chmod 0777 /code/cron.log

RUN chmod 0777 /code/

RUN chmod 0777 /etc/crontabs/$APP_USER

CMD ["crond", "-f", "-d", "0"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...