Как я могу докеризировать свой проект с двумя приложениями в отдельных сервисах
как я могу докеризировать мой проект django так, чтобы запустить два приложения в двух разных сервисах и один запустить с портом:8000, а другой с портом:8001 извините за мой английский lol!!!
я попробовал сделать два dockerfile в каждом приложении
# Use an official Python runtime as a parent image
FROM python:3.8-slim
# Set the working directory
WORKDIR /usr/src/app
# Copy the requirements file into the container
COPY app1/requirements.txt ./
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code
COPY app1/ .
# Run the application
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
и для app2
# Use an official Python runtime as a parent image
FROM python:3.8-slim
# Set the working directory
WORKDIR /usr/src/app
# Copy the requirements file into the container
COPY app2/requirements.txt ./
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the application code
COPY app2/ .
# Run the application
CMD ["python", "manage.py", "runserver", "0.0.0.0:8001"]
и один docker-compose.yml в корне проекта
version: '3.8'
services:
app1:
build:
context: .
dockerfile: app1/Dockerfile
volumes:
- ./app1:/usr/src/app
ports:
- "8000:8000"
environment:
- DJANGO_SETTINGS_MODULE=myproject.settings
app2:
build:
context: .
dockerfile: app2/Dockerfile
volumes:
- ./app2:/usr/src/app
ports:
- "8001:8001"
environment:
- DJANGO_SETTINGS_MODULE=myproject.settings
но это не сработало.
При использовании docker-compose проекты будут запускаться на разных образах. Я думаю, что вы хотите запустить оба проекта на одном образе, поэтому вам следует использовать один Dockerfile и скопировать оба проекта в образ, а затем запустить их оба, как показано ниже.
CMD ["sh", "-c", "\
python app/one/manage.py runserver 0.0.0.0:8001 && \
python app/two/manage.py runserver 0.0.0.0:8000 \
"]