📅  最后修改于: 2023-12-03 14:39:12.617000             🧑  作者: Mango
Docker是一个开源的容器化平台,它可以让开发人员轻松地构建、部署和运行应用程序。Angular是一个流行的JavaScript框架,用于构建Web应用程序。将两者结合起来,可以让你更轻松地部署和运行Angular应用程序。
下面是一个简单的Dockerfile,用于从Node.js镜像构建一个Angular 9应用程序的Docker映像。
FROM node:14.16.0 AS builder
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:1.17.10-alpine
COPY --from=builder /usr/src/app/dist/angular-app /usr/share/nginx/html
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
这个Dockerfile有两个部分:
为了在Docker容器中正确地运行Angular应用程序,我们需要自定义Nginx的配置文件,以确保Nginx正确地服务器应用程序的路由。
server {
listen 80;
# Add headers to enable CORS
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Headers' 'X-Requested-With,Content-Type, Authorization';
# The Angular app is a Single Page Application (SPA)
location / {
try_files $uri $uri/ /index.html;
}
}
这将确保Nginx正确地处理Angular应用程序的路由,并允许跨域资源共享。
现在我们有了Dockerfile和自定义Nginx配置文件,我们可以使用以下命令构建Docker映像:
docker build -t angular-app .
这将构建一个名为"angular-app"的Docker映像。
现在我们可以使用以下命令将Docker容器运行在端口80上:
docker run -p 80:80 angular-app
现在你可以访问你的Angular应用程序,它将运行在Docker容器中,通过Nginx进行代理和路由。
在这篇文章中,我们看到了如何使用Docker和Angular 9构建一个可移植的应用程序。我们创建了一个Dockerfile,包括Node.js镜像和Nginx镜像,并自定义了Nginx配置文件以确保正确处理路由。现在你可以使用Docker部署你的Angular应用程序,而不用担心环境里的设置是否正确。