Добрый день, SO,
Я знаю, что это плохая практика и что у меня должно быть одно приложение на контейнер, но есть ли у меня способ иметь две службы, работающие одновременно в одном контейнере, и как мне go написать для него Dockerfile?
Мой текущий Dockerfile для Flask (Backend) приложения:
FROM python:3.6.9-slim-buster
WORKDIR /app/flask_backend
ENV PYTHONPATH "${PYTHONPATH}:/app"
COPY ./flask_backend ./
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD python3 app/webapp/app.py
My React (Frontend) Dockerfile:
FROM node:12.18.0-alpine as build
WORKDIR /app/react_frontend
ENV PATH /app/node_modules/.bin:$PATH
ENV NODE_OPTIONS="--max-old-space-size=8192"
COPY ./react_frontend/package.json ./
COPY ./react_frontend/package-lock.json ./
RUN npm ci
RUN npm install react-scripts@3.4.1 -g
RUN npm install serve -g
COPY ./react_frontend ./
CMD ["serve", "-s", "build", "-l", "3000"]
Моя попытка запустить оба приложения в одном и том же Docker контейнере заключалась в объединении двух файлов Docker, но полученный контейнер не содержит данных из первого файла Docker, и я не знаю, как действовать дальше.
Мой объединенный файл Dockerfile:
FROM python:3.6.9-slim-buster
WORKDIR /app/flask_backend
ENV PYTHONPATH "${PYTHONPATH}:/app"
COPY ./flask_backend ./
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD python3 app/webapp/app.py
FROM node:12.18.0-alpine as build
WORKDIR /app/react_frontend
ENV PATH /app/node_modules/.bin:$PATH
ENV NODE_OPTIONS="--max-old-space-size=8192"
COPY ./react_frontend/package.json ./
COPY ./react_frontend/package-lock.json ./
RUN npm ci
RUN npm install react-scripts@3.4.1 -g
RUN npm install serve -g
COPY ./react_frontend ./
CMD ["serve", "-s", "build", "-l", "3000"]
Я новичок в использовании Docker, и поэтому предвижу, что возникнет несколько проблем, таких как связь между двумя приложениями (Backend использует порт 5000), используя этот метод. Будем очень признательны за любое руководство!