Docker Compose端口问题。无法在本地主机上启动Docker项目。

4

我正在使用安装有Docker Desktop for Mac稳定版的mac(El Capitan,版本号10.11.6)。

我在官方node镜像上运行一个简单的javascript应用程序。下面是Dockerfile的内容:

FROM node

WORKDIR /usr/local/src

以下是docker-compose.yml文件:

version: '2'

services:
  web:
    container_name: myproject_dev
    build: .
    command: npm run development
    ports:
     - "1234:8000"
     - "1235:8080"
     - "80:80"
    volumes:
      - ./my-project:/usr/local/src

运行 docker-compose up 正常启动所有内容:

myproject_dev | http://localhost:8080/webpack-dev-server/
myproject_dev | webpack result is served from /assets/
myproject_dev | content is served from /usr/local/src

docker ps 显示端口已映射:

CONTAINER ID        IMAGE                        COMMAND                 CREATED             STATUS              PORTS                                                                NAMES
820694f618b4        myproject_web   "npm run development"   20 minutes ago      Up 20 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:1234->8000/tcp, 0.0.0.0:1235->8080/tcp   myproject_dev

但是我无法在浏览器上看到项目页面(使用localhost:1234)。当我在docker外运行项目时,一切正常。因此,可以排除项目问题。

尝试了以下方法:

  1. 使用不同的node docker
  2. 在docker beta和stable版本之间切换
  3. 停止所有主机apache/nginx服务

但是没有成功 :( 我错过了什么?

2个回答

11
您运行的服务只监听容器localhost接口,因此容器外部无法访问它。它需要监听0.0.0.0才能被访问到。

所以,我通过添加以下内容更改了compose文件:ports: - "0.0.0.0:41000:8000" - "0.0.0.0:41001:8080"这是你的意思吗?但问题仍然存在。 - Parag
1
不是的,问题出在应用程序配置上而不是Compose文件。应用程序需要监听默认公共接口(0.0.0.0)而不是localhost - dnephin
你说得对!看起来那就是问题所在。我会进一步检查应用程序,然后将您的答案标记为已接受。谢谢。 - Parag

0

Ping 不是这样工作的;它查询主机,而不是该主机的端口。如果要测试您连接到给定主机上的给定端口的能力,您可能需要类似 nc -vz <host> <port> 的东西。


好的,我的意思是我无法在浏览器上看到项目的index.html页面。我只收到一条消息,说“本地主机没有发送任何数据”。 - Parag
您的命令输出如下: nc -vz localhost 1234 1 ↵ 找到0个关联项 找到1个连接: 1: 标志=82<已连接,首选> 输出接口 lo0 源地址 ::1 端口 60274 目标地址 ::1 端口 1234 排名信息不可用 TCP辅助信息可用连接到本地主机端口1234 [tcp/search-agent] 成功! - Parag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接