Как запустить серверы разработки react и django в одном файле Dockerfile?

#docker #dockerfile

Вопрос:

Мой текущий файл Dockerfile выглядит следующим образом

 # base image
FROM node:14
# react
WORKDIR 'frontend'
COPY frontend/package.json .
RUN npm install
COPY frontend .
CMD ["npm", "start"]

# django
FROM python:3.9
WORKDIR 'server'
COPY server/requirements.txt ./server/
RUN pip install -r requirements.txt
COPY server ./server
CMD ["python", "manage.py", "runserver"]

 

Если я закомментирую react или django, сработает другое. К сожалению, я не могу заставить это работать вместе. Есть ли способ объединить их в одном файле Dockerfile?

Комментарии:

1. Я мог бы предложить RUN npm build или что-то подобное на первом этапе скомпилировать интерфейсное приложение в статические файлы, а затем что-то подобное COPY --from=frontend /frontend/dist ./static на втором этапе, чтобы использовать его в качестве статических файлов.

Ответ №1:

user9066046 — Вы пытаетесь запустить 2 контейнера docker в одном файле — есть docker-составьте для запуска мультиконтейнеров — одновременно:

Также здесь есть возможность передавать ENV_VARIABLES для конкретной среды (DEV, QA ,UAT, PROD) и т.д.

https://docs.docker.com/compose/

 version: "3.9"
services:
  react:
    build: .
    image: react
    ports:
      - "5000:5000"
  django:
    image: django
    ports:
      - "5001:5000"
 

Для него имя изображения — из которого должны быть построены контейнеры.