首页 > 解决方案 > 在没有端口映射的情况下运行节点 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 上运行。是否可以在没有 8000 端口的情况下访问端口-p 8000:8000?我只想能够做到

docker run imageName

并在我的浏览器上访问应用程序 localhost:8000

标签: node.jsdocker

解决方案



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

但是您可以使用docker-compose它轻松设置配置和运行 docker 映像。

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

    version: '3'
    services:
      web:
        build: .
        ports:
         - "8000:8000"
    
  • 现在您可以使用此命令启动 docker
    docker-compose up
    如果您想在后台运行您的服务,您可以将 ‍‍<code>-d 标志(用于“分离”模式)传递给docker-compose up -d并使用 `docker-compose ps 来查看是什么目前正在运行。

Docker 撰写教程


推荐阅读