Dockerize两件事并在一个目录中使用

Dockerize两件事并在一个目录中使用,docker,Docker,我有一个Angle-Flask应用程序,我正在尝试使用以下Dockerfile将其dockerize: FROM node:latest as node COPY . /APP COPY package.json /APP/package.json WORKDIR /APP RUN npm install RUN npm install -g @angular/cli@7.3.9 CMD ng build --base-href /static/ FROM python:3.6 WORKDIR

我有一个Angle-Flask应用程序,我正在尝试使用以下Dockerfile将其dockerize:

FROM node:latest as node
COPY . /APP
COPY package.json /APP/package.json
WORKDIR /APP
RUN npm install
RUN npm install -g @angular/cli@7.3.9
CMD ng build --base-href /static/

FROM python:3.6
WORKDIR /root/
COPY --from=0 /APP/ .
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]
在构建映像并运行映像时,console不会给出任何错误。然而,它似乎被卡住了。这里可能有什么问题? 是因为它们都在不同的目录中吗? 既然我正在停靠Flask和Angular,我如何将两者放在同一个目录中(现在一个在/APP中,另一个在/root中) 或者我应该将两者放在单独的容器中,并使用docker-compose.yml文件? 在这种情况下,如何编写文件?实际上,我的烧瓶调用我的Angular,两个都在同一端口上运行。所以我不确定在两个不同的容器中运行是否是个好主意

我还提供了用于构建和运行映像的命令,以供参考:

docker图像构建-t prj

docker容器运行--发布5000:5000--名称prj prj


在Dockerfile的角度构建第一阶段,使用
RUN
而不是
CMD


CMD
用于在生成最终映像后运行命令。

它是如何“卡住”的?将Angular应用程序编译为静态文件,并像您所做的那样从Flask应用程序中提供这些文件是一种合理的方法(尽管请参阅@hoverTech,您确实需要
运行
ng build)。是的,我能够成功地为该应用程序提供服务。由于某些原因,应用程序没有在端口5000上运行,但我成功地在端口5001上运行了它。谢谢!