Docker 是一种开源的容器化平台,它允许开发者将应用程序及其依赖项打包成一个独立的容器,从而在任何环境中都能一致地运行。Angular 是一个流行的前端框架,用于构建单页应用程序(SPA)。
原因:每个 Angular 应用程序默认运行在 4200 端口,多个应用程序会导致端口冲突。
解决方法:
angular.json
文件中修改每个应用程序的端口。{
"projects": {
"app1": {
"architect": {
"serve": {
"options": {
"port": 4201
}
}
}
},
"app2": {
"architect": {
"serve": {
"options": {
"port": 4202
}
}
}
}
}
}
docker-compose.yml
文件中配置端口映射。version: '3.8'
services:
app1:
build: ./app1
ports:
- "4201:4200"
app2:
build: ./app2
ports:
- "4202:4200"
假设你有两个 Angular 应用程序 app1
和 app2
,以下是如何在 Docker 中运行它们的示例。
app1/Dockerfile
# 使用 Angular 官方镜像作为基础镜像
FROM node:14
# 设置工作目录
WORKDIR /usr/src/app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制应用程序代码
COPY . .
# 构建应用程序
RUN ng build --prod
# 暴露端口
EXPOSE 4200
# 启动应用程序
CMD ["npm", "start"]
app2/Dockerfile
# 使用 Angular 官方镜像作为基础镜像
FROM node:14
# 设置工作目录
WORKDIR /usr/src/app
# 复制 package.json 和 package-lock.json
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制应用程序代码
COPY . .
# 构建应用程序
RUN ng build --prod
# 暴露端口
EXPOSE 4200
# 启动应用程序
CMD ["npm", "start"]
docker-compose.yml
version: '3.8'
services:
app1:
build: ./app1
ports:
- "4201:4200"
app2:
build: ./app2
ports:
- "4202:4200"
通过以上配置,你可以在同一主机上运行多个 Dockerized Angular 应用程序,并避免端口冲突问题。
领取专属 10元无门槛券
手把手带您无忧上云