如何将vuejs(前端)应用程序与(后端)flask api停靠在同一容器中?

fxnxkyjh  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(374)

我可以使用以下代码在单个容器中成功创建和运行后端flask api和前端vue应用程序:


### Running the flask API in the backend     #########

FROM python:3.6-slim as production
WORKDIR /usr/src/app

COPY requirements.txt ./backend/
COPY application.py ./backend/

RUN pip install -r /usr/src/app/backend/requirements.txt

EXPOSE 5000
CMD ["python", "/usr/src/app/backend/application.py"]

########################################################### 

### Running the main vue.js app as the frontend  ######

FROM node:lts-alpine
RUN npm install -g http-server
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# run the vue app & expose container port 8080 for the frontend

CMD [ "http-server", "dist" ]
EXPOSE 8080

########################################################### 

但是,当我尝试在单个容器中组合它们时,只有vue应用程序在localhost:8080上运行,但它无法访问flask api输出,我认为该输出将在端口5000的容器中本地运行


### Running the flask API in the backend     #########

FROM python:3.6-slim as production
WORKDIR /usr/src/app

COPY requirements.txt ./backend/
COPY application.py ./backend/

RUN pip install -r /usr/src/app/backend/requirements.txt

# EXPOSE 5000

CMD ["python", "/usr/src/app/backend/application.py"]

########################################################### 

### Running the main vue.js app as the frontend  ######

FROM node:lts-alpine
RUN npm install -g http-server
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# run the vue app & expose container port 8080 for the frontend

CMD [ "http-server", "dist" ]
EXPOSE 8080

########################################################### 

想知道是否有一种方法可以在容器内运行 flask api而不旋转单独的容器?

quhf5bfb

quhf5bfb1#

在dockerfile中,第二个 CMD 命令将覆盖上一个命令。查看此帖子以获取有关此主题的更多信息。
在这种情况下,更好的方法是使用两个单独的docker文件(一个用于后端,一个用于前端),并使用docker compose同时启动它们。

相关问题