【问题标题】:Doesn't connect to localhost when running within a docker container using nodejs app & anguar使用 nodejs app 和 anguar 在 docker 容器中运行时不连接到 localhost
【发布时间】:2022-01-12 15:50:06
【问题描述】:

我正在使用带有 angular 应用程序 的 Nodejs。我将 Angular 部署到我的 docker 桌面。它正在运行,但是当我想使用 PC 浏览器中的 localhost 从我的 PC 访问时,它没有连接..

这是正在运行的 docker 映像

这里是 Dockerfile 代码

    FROM node:16.13.1 as build
    WORKDIR /app
    COPY package.json /app
    COPY . .
    RUN npm install
    RUN npm run build --prod
    RUN ls -la dist
    FROM nginx:alpine
    COPY --from=build /app/dist /usr/share/nginx/html
    EXPOSE 4200

当我想从我的电脑使用 http://localhost:4200/ 访问时,它没有连接。 请帮忙找出问题..

【问题讨论】:

    标签: node.js angular docker


    【解决方案1】:

    EXPOSE 4200 什么都不做,在这种情况下会产生误导。您使用 EXPOSE 记录图像侦听的端口。正如 Antoine 所说,nginx 监听 80 端口,所以如果你想要一个 EXPOSE 语句,它应该是EXPOSE 80

    删除 EXPOSE 语句,因为它具有误导性

    FROM node:16.13.1 as build
    WORKDIR /app
    COPY package.json /app
    COPY . .
    RUN npm install
    RUN npm run build --prod
    RUN ls -la dist
    FROM nginx:alpine
    COPY --from=build /app/dist /usr/share/nginx/html
    

    当你运行你的容器时,你可以像这样将容器中的 80 端口映射到你机器上的 4200 端口

    docker run -d -p 4200:80 my_image_name
    

    然后您就可以通过访问 http://localhost:4200/ 来加载您的应用程序

    【讨论】:

      【解决方案2】:

      nginx:alpine 暴露在 80 端口。
      运行npm startng serve时使用端口4200进行开发。

      【讨论】:

        猜你喜欢
        • 2018-06-25
        • 1970-01-01
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        • 1970-01-01
        • 2019-02-16
        • 2021-10-31
        • 1970-01-01
        相关资源
        最近更新 更多