在没有端口映射的情况下运行节点Docker

时间:2019-01-08 19:07:27

标签: node.js docker

我非常喜欢新的Docker,因此如果这是一个非常愚蠢的问题,请原谅我。谷歌搜索并没有真正产生我想要的东西。我有一个非常简单的Dockerfile,看起来像下面的

FROM node:9.6.1
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --silent
COPY . /usr/src/app

RUN npm start
EXPOSE 8000

应用程序在容器中的端口8000上运行。是否可以在没有-p 8000:8000的情况下访问端口8000?我只希望能够做到

docker run imageName

,然后在我的浏览器上的localhost:8000上访问该应用程序

1 个答案:

答案 0 :(得分:0)


默认情况下,创建容器时,它不会将其任何端口发布到外界。要使端口可用于Docker外部的服务或未连接到容器网络的Docker容器,请使用‍ --publish-p标志。这将创建一个防火墙规则,该规则将容器端口映射到Docker主机上的端口。
了解更多:Container networking - Published ports

但是您可以使用docker-compose来设置配置并轻松运行docker镜像。

  • 首先安装docker-composeInstall Docker Compose
  • 第二次在docker-compose.yml旁边创建Dockerfile并在上面复制此代码

    version: '3'
    services:
      web:
        build: .
        ports:
         - "8000:8000"
    
  • 现在您可以使用此命令启动docker
    docker-compose up
    如果要在后台运行服务,可以将‍ -d标志(用于“分离”模式)传递给docker-compose up -d,然后使用docker-compose ps查看当前正在运行的内容。 / p>

Docker Compose Tutorial