我在本地成功启动了 docker 映像,但无法在 localhost 上发送任何请求。我在邮递员中遇到错误套接字挂起,并且 localhost 没有发送任何数据。
docker 文件
FROM node:20-alpine
MAINTAINER Some Dev
RUN mkdir /app
WORKDIR /app
COPY ./backend /app
RUN npm i
CMD ["npm","start"]
app.ts 和我试图达到的小路线 configs.PORT = 5000 configs.HOST = 0.0.0.0
app.get('/hello',async (req:Request,res:Response,next:NextFunction)=>{
res.json("Hello")
})
const startServer = async () => {
try {
await mongoose.connect(configs.DB_URL);
console.log("Connected to MongoDB");
app.listen(+configs.PORT, configs.HOST,() =>{
console.log(`Server listening on ${configs.PORT} and host ${configs.HOST}`);
})
} catch (err) {
throw new ApiError(err.message, err.status);
}
};
startServer();
docker build -t buxonlineappv2 .
docker run -d -p 5555:80 buxonlineappv2
容器 ID 图像命令创建状态端口名称 6fd90778e2df buxonlineappv2“docker-entrypoint.s…”51秒前向上39秒0.0.0.0:5555->80/tcp jolly_saha
首先我添加了主机 0.0.0.0。尝试了不同的端口。尝试过 localhost:5555/hello 0.0.0.0:5555/hello http:localhost:5555/hello
您的
configs.PORT
设置为 5000,因此您的应用程序侦听端口 5000。
这意味着这就是您需要在容器端映射的端口。现在你用
映射端口80docker run -d -p 5555:80 buxonlineappv2
你应该像这样映射端口 5000
docker run -d -p 5555:5000 buxonlineappv2
它应该可以工作。
由于您的服务器正在侦听端口 5000,因此您应该运行以下命令来运行容器:
docker run -d -p 5555:5000 buxonlineappv2
以便主机上的 5555 端口与容器中的 5555 端口映射。