У меня есть приложение на python, в котором используются работники сельдерея, которые я хотел бы докеризовать. К сожалению, и Python, и Celery используют одну и ту же кодовую базу. Хотя они должны быть отдельными контейнерами для облегчения масштабирования. Если я создаю их отдельно и запускаю контейнеры, это работает нормально. Проблема начинается, когда я представляю docker-compose, поэтому я не могу поменять файлы docker в папке с кодом, и контейнеры должны быть собраны из-за пределов папки. Структура папок следующая:
/application
/application-build
Dockerfile
/celery-build
Dockerfile
/code
application.py
otherfiles.py
Я немного покопался и, к сожалению, насколько я знаю, файлы из родительского каталога не могут быть скопированы в dockerfile. Хотя я хотел бы скопировать один и тот же код в оба контейнера.
(Имейте в виду, что следующие докер-файлы не являются теми, которые я использую.)
Dockerfile1:
FROM python:3.6
ADD /code .
COPY requirements.txt requirements.txt
RUN python3.6 -m pip install -r requirements.txt
CMD ["python3.6", "application.py"]
Dockerfile2:
FROM python:3.6
ADD /code .
COPY /code/requirements.txt .
RUN python3.6 -m pip install -r requirements.txt
CMD ["celery","-A application.celery", "worker","work1@host"]
Одним из решений, которое я вижу, является реорганизация папок так, чтобы каталог кода всегда был дочерним по отношению к каталогу dockerfile, например:
/application
/application-build
Dockerfile
/celery-build
Dockerfile
/code
application.py
otherfiles.py
Хотя это не выглядит умным.