我对 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
将 Dockerfile 中的 EXPOSE 3000 端口替换为 4000,然后重试