我想做什么?
我想在docker容器中运行我的nodejs应用,并希望能够通过容器外的浏览器(端口3000)使用它。
DockerFile
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
RUN npm run build
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
app.ts(相关部分)
const port = process.env.port || 3000;
let app = express();
app.listen(port, () => {
console.log(`Listening on port ${port}!`);
});
我使用的命令
$ docker run --net=host <imgName>
操作系统 --> Windows 7
在Oracle Virtual Box中,我将网络设置更改为桥接网络。
该命令成功运行,服务器开始侦听端口80。我可以通过postman、curl、浏览器等从容器外部访问它的80端口。
我做错了什么?如何使它侦听3000端口?如果我没有显式地exposed
端口,它是如何能够侦听端口的?
我认为docker将port
作为一个环境变量
传递,并将其设置为80,因为我自己没有传递任何环境变量。
请帮帮我,我对docker
非常陌生。
docker ps
和docker logs <容器ID>
的内容 - Sathyajith Bhat80
而不是3000
。当我在主机上编译并运行docker build .
命令时,它可以使用命令docker -p 3000:3000 <imageName>
正常工作。我还必须在 vm virtual box 的 NAT 端口转发部分中添加一条规则。 - vibhor1997a