如何将Angular作为前端,Python作为后端的全栈web应用程序dockerize?
如何将Angular作为前端,Python作为后端的全栈web应用程序停靠在一个文件中?我已经分别对接了前端和后端。如果可能的话,我如何将两者合并到一个文件(应用程序)中 前端示例docker代码如何将Angular作为前端,Python作为后端的全栈web应用程序dockerize?,python,angular,docker,Python,Angular,Docker,如何将Angular作为前端,Python作为后端的全栈web应用程序停靠在一个文件中?我已经分别对接了前端和后端。如果可能的话,我如何将两者合并到一个文件(应用程序)中 前端示例docker代码 FROM nginx:1.13.3-alpine ## Remove default nginx website RUN rm -rf /usr/share/nginx/html/* ## From 'builder' stage copy over the artifacts in dist fol
FROM nginx:1.13.3-alpine
## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*
## From 'builder' stage copy over the artifacts in dist folder to default nginx public folder
COPY /dist /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
FROM python:3
ADD main.py /
pip install all dependencies
CMD [ "python", "./main.py" ]
后端示例docker代码
FROM nginx:1.13.3-alpine
## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*
## From 'builder' stage copy over the artifacts in dist folder to default nginx public folder
COPY /dist /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
FROM python:3
ADD main.py /
pip install all dependencies
CMD [ "python", "./main.py" ]
只有在可能的情况下,我才想将两者合并到一个文件(应用程序)中。这个问题似乎很难解释,但根据您的评论,我将提供一些指导 我想将两者合并到一个文件(应用程序)中 只要有可能 容器设计为每个容器运行一个进程,通常称为“经验法则,每个容器运行一个进程”。这并不意味着不可能,但最好从第一天开始就采用最佳实践 每个容器应该只有一个问题。将应用程序解耦到多个容器中可以更轻松地水平扩展和重用容器。例如,web应用程序堆栈可能由三个单独的容器组成,每个容器都有自己独特的映像,以解耦的方式管理web应用程序、数据库和内存缓存。将每个容器限制为一个进程是一个很好的经验法则 现在来回答你的第二个问题 我如何将两者合并到一个文件中 (应用),如果可能的话 最好将其固定在单独的容器中,并使用创建网络和服务对服务通信。考虑到DOCKER编写一个文件(比如你需要一个应用程序),这将使你的两个组件在同一个网络中。 比如说
version: "3.7"
services:
web-app:
build:
context: ./web-app
dockerfile: Dockerfile-nginx
ports:
- "8080:80"
backend-app:
build:
context: ./backend-app
dockerfile: Dockerfile-python
ports:
- "3000:3000"
您还可以添加dependcey来维护订单
取决于
表示服务之间的依赖关系,服务依赖关系导致
以下行为:
docker compose up按依赖顺序启动服务。在
下面的示例中,db和redis是在web之前启动的
因此,我建议进行探索
通过这样做,web应用程序和后端应用程序可以使用容器名称相互调用,就像前端应用程序调用后端端点一样
http://backend-app:3000/api/v1/login
您也必须让Python为Angular build生成的静态资产提供服务。不要让它们成为一个,docker的经验法则是“每个contianer一个进程”,对于angular,您需要nginx,因为anualr只是静态页面,您需要服务器来为这些页面提供服务