У меня есть приложение Django 2.1, и я настроил его для запуска в Docker.
Мне нужно развернуть 2 экземпляра одного и того же приложения, и различия заключаются в том, что база данных подключена к каждому экземпляру, а некоторые параметрыsettings.py
.Каждый экземпляр должен быть назначен на свой порт (скажем, 8000 и 8001).
На самом деле у меня есть 2 разные папки, например, если было 2 проекта со своей средой и настройками, и каждый запускаетсяс помощью команды manage.py runserver 0.0.0.0:800x
(потому что все еще находится в разработке).
Основной вопрос: есть ли способ развернуть эти 2 экземпляра в одном образе одного докера, при этом эти 2 порта и каждый экземпляр работают со своимсобственный файл настроек?
Примечание: поскольку у меня есть некоторые конкретные параметры в setting.py, я использую их в представлениях, импортирующих параметр следующим образом: from MyApp.settings import COMPANY_ID
Примечание2: этоDockerfile для развертывания одного экземпляра:
FROM python:3.7
# COPY startup script into known file location in container
COPY start.sh /start.sh
# EXPOSE port to allow communication to/from server
EXPOSE 8000
# The enviroment variable ensures that the python output is set straight
# to the terminal with out buffering it first
ENV PYTHONUNBUFFERED 1
# create root directory for our project in the container
RUN mkdir /app
# Set the working directory to /music_service
WORKDIR /app
# Copy the current directory contents into the container at /music_service
ADD . /app/
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# CMD specifcies the command to execute to start the server running.
CMD ["/start.sh"]
, и мой файл start.sh содержит это:
#!/bin/bash
# Apply any missing migration
./manage.py migrate
# Start Gunicorn processes
echo Starting Gunicorn.
exec gunicorn MyApp.wsgi:application \
--bind 0.0.0.0:8000 \
--workers 17