Docker 撰写:从浏览器访问我的网络应用程序

Docker Compose: Accessing my webapp from the browser

我发现这方面的文档非常缺乏(或者,我很笨),但这是我的设置:

Webapp 运行正在 NodeExpress 上,在 port 8080 上。它还与 MongoDB 容器连接(因此我使用 docker-compose)。

在我的 Dockerfile 中,我有:

FROM node:4.2.4-wheezy

# Set correct environment variables.
ENV HOME /root

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app/
RUN npm install;

# Bundle app source
COPY . /usr/src/app

CMD ["node", "app.js"]

EXPOSE 8080

我运行:

docker-compose build web
docker-compose build db
docker-compose up -d db
docker-compose up -d web

当我 运行 docker-machine ip default 我得到 192.168.99.100.

因此,当我在浏览器中转到 192.168.99.100:8080 时,我会 期望 看到我的应用程序 - 但连接被拒绝。

我在这里做错了什么傻事?

这里也很新,但是您是否在 docker-compose 文件中发布了端口?

您的 Dockerfile 只会公开端口,但不会开放对主机的访问。发布(在 docker run 命令上使用 -p 标志或在 docker-compose 文件上使用 ports。将允许从容器外部访问(参见 ports in the docs) 这样的事情可能会有所帮助:

ports:
  - "8080:8080"