如何从 docker 容器测试 localhost API

问题描述 投票:0回答:1

我对 docker 有点陌生,我试图弄清楚如何使用 docker compose。到目前为止,我只创建了一个名为“http://localhost:3000/test”的测试 API,它只会返回“Hello World”。如果我使用 Node Index.js 运行我的设备,则该 url 可以完全找到。但是,如果我使用 docker compose 运行,该网址将不起作用。

详细代码如下:

index.js:

app.get('/test', (req, res) => {
  try {
    res.status(200).send('Hello World');
  } catch (err) {
    console.error(err.message);
    res.status(500).send('Server error');
  }
});

const PORT = process.env.PORT || 4000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

后端.docker文件:

FROM node:20

WORKDIR /app

COPY package*.json ./

RUN npm install && npm install -g nodemon

COPY . .

EXPOSE 3000

CMD ["node", "server/index.js"]

compose.yaml:

version: '3.9'

services:
  backend:
    container_name: backend
    image: backend
    build:
      context: ./backend
      dockerfile: backend.dockerfile
    ports:
      - 4000:4000

运行*docker compose build *和docker compose up后:

docker compose up
time="2024-07-25T21:05:29-05:00" level=warning msg="C:\\Users\\...\\...\\...\\compose.yaml: `version` is obsolete"
[+] Running 1/0
 ✔ Container backend  Recreated                                                                                                                              0.1s 
Attaching to backend
backend  | Server running on port 4000
node.js docker
1个回答
0
投票

将 Dockerfile 中的 EXPOSE 3000 端口替换为 4000,然后重试

© www.soinside.com 2019 - 2024. All rights reserved.