Python 用于烧瓶的Docker多级&x2B;VueJs项目

Python 用于烧瓶的Docker多级&x2B;VueJs项目,python,docker,vue.js,flask,docker-compose,Python,Docker,Vue.js,Flask,Docker Compose,我有一个项目,Flask作为后端,VueJS作为前端。希望将所有内容都放在容器中,容器将在生产服务器上运行 我需要安装所有依赖项(npm install)并从vue(npm run build)构建静态文件,以获取dist文件夹(包含HTML文件和资产),然后构建Flask项目:安装python、依赖项并在gunicorn上运行服务器。然后将我的dist文件夹复制到Flask目录 我阅读了有关多阶段的内容,并尝试将其结合起来,以下是我的Dockerfile代码: FROM python:3.7-

我有一个项目,Flask作为后端,VueJS作为前端。希望将所有内容都放在容器中,容器将在生产服务器上运行

我需要安装所有依赖项(
npm install
)并从vue(
npm run build
)构建静态文件,以获取dist文件夹(包含HTML文件和资产),然后构建Flask项目:安装python、依赖项并在gunicorn上运行服务器。然后将我的dist文件夹复制到Flask目录

我阅读了有关多阶段的内容,并尝试将其结合起来,以下是我的Dockerfile代码:

FROM python:3.7-alpine as backend-builder
RUN mkdir /app
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt

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

FROM busybox
COPY --from=build-stage /frontend/dist /app/dist
RUN ls
它正在运行,但不要将dist复制到Flask目录

我的项目结构是:

project_folder
 - app (python + flask files)
   -- app.py
   -- wsgi.py
   -- requirements.txt
   -- etc
 - frontend (vuejs files, packages)
   -- public
   -- src
   -- package.json
   -- etc
 - Dockerfile

我做错了什么?如何写Dockerfile,解决我的问题

来自busybox的
行创建了一个新的图像,它没有引用python图像。只需在构建python之前构建js,这样就可以在python构建完成时复制文件

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

FROM python:3.7-alpine as backend-builder
RUN mkdir /app
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
COPY --from=build-stage /frontend/dist /app/dist

这些可能有助于构建Dockerfile,Dockerizing flask应用程序:以及研究Dockerizing Vue.js应用程序:您的Dockerfile可以得到改进/简化(特别是
RUN cd..
是不可操作的,
RUN mkdir/frontend
是不必要的,因为
WORKDIR/frontend
暗示了这一点)