我有一个 Node.js 服务器在 Docker 容器内的端口 8080 上运行。我可以毫无问题地从容器内部的外壳中使用
curl
curl http://localhost:8080
服务器,但是即使我已经映射了端口,我也无法从主机curl
服务器。
这是我的 Dockerfile:
FROM node:19.7
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "npm", "run", "start:dev" ]
这里是mydocker-compose.yml:
version: "3.9"
services:
app:
container_name: app
build: .
depends_on:
- postgres
ports:
- "8080:8080"
volumes:
- ./:/usr/src/app/
- /usr/src/app/node_modules
postgres:
container_name: postgres
image: postgres:15.2
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- "5432:5432"
volumes:
- data:/var/lib/postgresql/data
pgadmin:
container_name: pgadmin
image: dpage/pgadmin4:6.20
environment:
- [email protected]
- PGADMIN_DEFAULT_PASSWORD=admin
- PGADMIN_LISTEN_PORT=5050
ports:
- "5050:5050"
volumes:
data:
我已经从主机上的终端尝试了
curl http://localhost:8080
,并期待看到响应,但却收到了curl: (52) Empty reply from server
。我也试过curl http://127.0.0.1:8080
和curl http://app:8080
并收到同样的错误。