gpt4 book ai didi

node.js - Docker-compose 构建但应用程序不在本地主机上提供服务

转载 作者:行者123 更新时间:2023-12-02 19:16:36 31 4
gpt4 key购买 nike

这里是 Docker 新手。 Docker-compose 文件构建没有任何问题,但是当我尝试在 localhost:4200 上运行我的应用程序时,我收到一条消息 - localhost 没有在 chrome 上发送任何数据,服务器意外地断开了 safari 中的连接。我正在研究 MacOs Catalina。这是我的 yml 文件:

version: '3.0' 

services:
my-portal:

build: .

ports:
- "4200:4200"

depends_on:
- backend

backend:

build: ./backend

ports:
- "3000:3000"

environment:

POSTGRES_HOST: host.docker.internal
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: mypwd

depends_on:
-db

db:
image: postgres:9.6-alpine

environment:
POSTGRES_DB: mydb
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: mypwd
POSTGRES_HOST: host.docker.internal

ports:
- 5432:5432
restart: always
volumes:
- ./docker/db/data:/var/lib/postgresql/data

Angular 日志:

/docker-entrypoint.sh: Configuration complete; ready for start upLog for Node: db connectedLog for Postgres: database system is ready to accept connections

以下是我的 Angular 和 Node Docker 文件:

FROM node:latest AS builder
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build --prod
EXPOSE 4200
# Stage 2
FROM nginx:alpine
COPY --from=builder /app/dist/* /usr/share/nginx/html/

Node :

FROM node:12    
WORKDIR /backend
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]

当我创建 Angular 图像并在 localhost:4200 上运行我的应用程序时,它运行良好。如果我遗漏了什么,请告诉我。

最佳答案

你的 Angular 容器是 FROM nginx 构建的,你使用来自 Docker Hub nginx image 的默认 Nginx 配置。 .它监听端口 80,因此这是您在使用 ports: 指令时需要使用的端口号:

services:
quickcoms-portal:
build: .
ports:
- "4200:80" # <-- second port must match nginx image's port
depends_on:
- backend

第一阶段的EXPOSE指令被完全忽略,你可以删除它。 FROM nginx 行导致 docker build 基本上完全从一个新的基础镜像开始,所以你的最终镜像是库存 Nginx 加上你 COPY --from 的文件= builder

关于node.js - Docker-compose 构建但应用程序不在本地主机上提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63222181/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com