我正在Pod中运行Node.js应用程序(与mongo容器一起使用) Nodejs应用程序侦听端口3000,该端口是我从容器中公开的。 我已经在Pod上发布了端口3000。 容器成功启动(已验证日志),但是无法在主机上访问我的应用程序。当我从Pod中卷曲到我的应用程序时,它可以工作。 容器运行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" ]
答案 0 :(得分: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