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 上运行。是否可以在没有 8000 端口的情况下访问端口-p 8000:8000
?我只想能够做到
docker run imageName
并在我的浏览器上访问应用程序 localhost:8000
解决方案
默认情况下,当您创建容器时,它不会向外界发布任何端口。要使端口可用于 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 来查看是什么目前正在运行。
推荐阅读
- c++ - 如何将 windows api 添加到 cmake 中,例如 synchapi.h?
- python - 在现有行之间添加具有相等间距值的新行
- indexing - 尝试索引 sphinx.conf 时出现 Sphinx 3 2.1 错误
- typescript - TypeScript:跨多种类型的接口?
- android - 如何使用Navigation框架实现分层导航?
- scala - Spark Job 没有向 Kafka 主题发布消息
- html - jQuery Ajax:html按钮在单击时保持静止而不调用ajax函数
- scala - 使用结构化 Spark 流从 Kafka 主题读取 AVRO 消息时出现问题(Spark 版本 2.3.1.3.0.1.0-187/Scala 版本 2.11.8)
- webpack - Rails 6、webpack 和tippy.js 给出“tippy 未定义”——我在哪里调用tippy() 函数?
- angular - PrimeNg 删除严重性图标