我非常喜欢新的 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-compose
。 Install 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 以查看当前正在运行的内容。
关于node.js - 在没有端口映射的情况下运行 Node Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54098156/