Docker 撰写:从浏览器访问我的网络应用程序
Docker Compose: Accessing my webapp from the browser
我发现这方面的文档非常缺乏(或者,我很笨),但这是我的设置:
Webapp 运行正在 Node
和 Express
上,在 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"
我发现这方面的文档非常缺乏(或者,我很笨),但这是我的设置:
Webapp 运行正在 Node
和 Express
上,在 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"