无法获得podman上的容器化NodeJS应用程序

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

我正在Pod中运行Node.js应用程序(与mongo容器一起使用)Nodejs应用程序侦听我从容器公开的端口3000。我已经在Pod上发布了端口3000。容器成功启动(已验证日志),但是无法在主机上访问我的应用程序。当我从吊舱内卷曲到我的应用程序时,它可以工作。容器运行rootfull,操作系统:CentOS Linux版本8.0.1905(核心)。我想念什么?

curl http://localhost:3000
curl: (7) Failed to connect to localhost port 3000: No route to host
podman ps
CONTAINER ID  IMAGE                                                     COMMAND               CREATED         STATUS             PORTS                   NAMES
30da37306acf  registry.gitlab.com/xxx/switchboard:master  node main.js          34 minutes ago  Up 34 minutes ago  0.0.0.0:3000->3000/tcp  switchboard-app
acc08c71147b  docker.io/library/mongo:latest                            mongod                35 minutes ago  Up 35 minutes ago  0.0.0.0:3000->3000/tcp  switchboard-mongo
podman port switchboard-app
3000/tcp -> 0.0.0.0:3000
app.listen(3000, "0.0.0.0",function () {
  console.log('App is listening on port 3000!');
});
FROM node:13
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY /dist/apps/switchboard .
EXPOSE 3000
CMD [ "node", "main.js" ]
node.js networking pod centos8 podman
1个回答
0
投票

如果要创建生产docker build,可以采用另一种方法。在容器内安装npm不是一个好主意,因为它将太大。首先运行npm run build,然后将构建的静态变量复制到使用nginx映像创建的docker容器中。因此,您的Dockerfile应该看起来像:

FROM nginx:1.13.0-alpine
COPY build/*  /usr/share/nginx/html/

还要在docker run中正确指定暴露的端口。因此,如果要公开3000,则步骤为:

cd /project/dir
docker build -t switchboard-app .
docker run -d -p 3000:80 --name switchboard-app switchboard-app
© www.soinside.com 2019 - 2024. All rights reserved.