gpt4 book ai didi

python - Flask + VueJs 项目的 Docker 多阶段

转载 作者:行者123 更新时间:2023-12-02 18:07:13 25 4
gpt4 key购买 nike

我有一个项目,Flask 作为后端,VueJS 作为前端。想把所有的都放在容器里,在生产服务器上运行。

我需要安装所有依赖项(npm install)并从 vue 构建我的静态文件(npm run build)以获取 dist 文件夹(带有 HTML 文件和 Assets ),然后构建 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,解决我的问题?

最佳答案

FROM 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

关于python - Flask + VueJs 项目的 Docker 多阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com