Docker Compose:从浏览器访问我的 web 应用程序

JVG*_*JVG 5 deployment node.js docker dockerfile docker-compose

我发现文档非常缺乏这一点(或者,我很愚蠢),但这是我的设置:

Webapp 运行于NodeExpress, 中port 8080。它还与 MongoDB 容器连接(这就是我使用 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
Run Code Online (Sandbox Code Playgroud)

我跑:

docker-compose build web
docker-compose build db
docker-compose up -d db
docker-compose up -d web
Run Code Online (Sandbox Code Playgroud)

当我跑步时,docker-machine ip default我得到了192.168.99.100

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

我在这里做错了什么愚蠢的事情?

Tkw*_*123 7

这里也相当新,但是您是否在 docker-compose 文件上发布了您的端口?

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

ports:
  - "8080:8080"
Run Code Online (Sandbox Code Playgroud)