问题:Angular 应用程序未从 docker-compose.yml 文件运行

我为我的 Angular 应用程序编写了以下 docker 文件。

Dockerfile:

# base image
FROM node:10.16.0-alpine AS build-step
# set working directory
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:1.16.1-alpine
COPY --from=build-step /app/dist/* /usr/share/nginx/html/
EXPOSE 4100
CMD ["nginx","-g","daemon off;"]

Docker 镜像创建成功。在我写的 docker-compose.yml 文件中:

version: '3'
services:
  applicationui:
    image:  applicationui
    build: /
    network_mode: host
    container_name: angular-container
    ports:
      - 4200:4100 

当我使用 localhost:4200 访问浏览器时执行 docker-compose up 后,页面没有打开。

运行 docker-compose up 在此处输入图像描述任何线索我错过了什么?

解答

您没有在 Dockerfile 中覆盖 Nginx 配置,因此端口的实际问题是 Nginx 默认监听PORT 80。所以改变暴露的端口。

EXPOSE 80

作为 Nginx 默认监听端口80,而不是端口4100,如 Angular ng serve 等,你期望从 Nginx。

所以最好使用 Expose80这将增加可读性,因为@David 提到如果你设置 network_mode: host 没有任何效果。

所以用80打开你的浏览器,它应该可以工作。

或者您可以绑定所需的端口,而无需在 docker-compose 中提及主机网络

    ports:
      - 4200:80 

http://localhost/

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐