node.js - 在没有端口映射的情况下运行 Node Docker

标签 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 上的应用

最佳答案


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

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

  • 首先安装docker-composeInstall Docker Compose
  • Dockerfile 旁边创建 docker-compose.yml 并将此代码复制到它们上

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

Docker Compose Tutorial

关于node.js - 在没有端口映射的情况下运行 Node Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54098156/

相关文章:

javascript - 在 NodeJS 中获取数组值时出现问题

docker - 来自openshift命名空间的Openshift特权容器访问服务

javascript - nodejs mocha套件未定义错误

node.js - 带有 cookie 的 ExpressJS session

node.js - NodeJS process.send 停止工作

Docker 命令失败(在 Windows 中)

Azure DevOps 管道 - 如何捕获错误

javascript - 使用 Node js获取文件系统类型

amazon-web-services - 在 64 位 Amazon Linux 2/3.2.2 和 Dockerrun.aws.json v3 上运行带有 Docker 的 Elastic Beanstalk

authentication - 使用 Bitbucket Pipelines 从 Docker 实例 SSH 到登台机器