Вопросы

Докеризация Vue во Flask с использованием uwsgi и nginx

Я хотел бы поместить в контейнер проект клиент-сервер, над которым я работал. Структура проекта следующая:

├── client
│   ├── dist
│   ├── node_modules
│   ├── public
│   └── src
├── nginx
└── server
    ├── __pycache__
    ├── env
    ├── static
    └── templates

Клиент — это приложение VueJs, а сервер — Flask. Я знаю, что мне нужно создать приложение Vue, используя npm run build, и «каким-то образом» скопировать содержимое папки dist в каталоги static и templates сервера. Вдобавок я хотел бы поставить сервер за uwsgi и Nginx для производства. Я следил за этим руководством:

https://pythonise.com/series/learning-flask/building-a-flask-app-with-docker-compose

но он не касается того, как обслуживать статические файлы Vue (после того, как они были созданы). Мне понравился подход с использованием docker-compose (как было предложено в руководстве), поэтому я следил за ним, и теперь у меня есть docker-compose.yml в корневом каталоге и 2 файла Dockerfile (для клиента и сервера)

Читать:
Добавление в массив после message.content discord bot

Содержимое docker-compose.yml:

version: "3.7"

services:

  flask:
    build: ./server
    container_name: flask
    restart: always
    expose:
      - 8080

  nginx:
    build: ./client
    container_name: nginx
    restart: always
    ports:
      - "80:80"

Серверный Dockerfile:

# Use the Python3.7.2 image
FROM python:3.7.2-stretch

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app 
ADD . /app

# Install the dependencies
RUN pip install -r requirements.txt

# run the command to start uWSGI
CMD ["uwsgi", "app.ini"]

содержимое app.ini:

uwsgi]
wsgi-file = app.py
callable = app
socket = :8080
processes = 4
threads = 2
master = true
chmod-socket = 660
vacuum = true
die-on-term = true

клиентский Dockerfile:

FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Я подумал, что, возможно, использование общего тома между контейнерами — возможное решение, но не был уверен, что именно так.

Любая помощь будет оценена.

Похожие записи

Джулия: Сделайте Dataframe из вывода итератора

admin

Компиляция VB6 из командной строки

admin

Альтернатива ceil () и floor () для получения ближайших целочисленных значений выше и ниже значения с плавающей запятой?

admin

Связывание атрибута href в Jinja2 и Vuejs

admin

Массив не в массиве для запроса доктрины

admin

Apexchart исчезает при смене страницы в React

admin