如何configurationdocker组合正确地公开端口?

我使用docker和docker组合来运行一个clojure和一个节点应用程序,旁边postgres。

该项目包含在以下文件夹结构中。

project/ -- app/ -- -- Dockerfile -- frontend/ -- -- /Dockerfile -- docker-compose.yml 

app/Dockerfile看起来像这样…

 FROM clojure:latest COPY . /usr/src/app WORKDIR /usr/src/app EXPOSE 9000 CMD ["lein", "run", "migrate", "&&","lein", "run"] 

frontend/Dockerfile看起来像这样…

 FROM node:5 COPY . /usr/src/app WORKDIR /usr/src/app RUN npm install EXPOSE 8080 CMD ["npm", "start"] 

最后,docker-compose.yml看起来像…

 frontend: image: bradcypert/node volumes: - ./frontend:/usr/src/frontend ports: - "8080:8080" backend: image: bradcypert/clojure volumes: - ./app:/usr/src/backend ports: - "9000:9000" links: - postgres postgres: image: postgres ports: - "5432:5432" 

后端失败了一个单独的原因,但前端似乎运行成功,被说,我无法打localhost:8080,并看到该应用程序。 我需要做些什么才能做到这一点?

提前致谢。

为了澄清,正在运行的命令是docker-compose up

使用boot2docker(在Mac或Windows上),要从localhost访问任何端口,必须configuration您的VirtualBox VM,以便将该端口从VM 端口转发到主机。

您的端口映射是正确的,但是您仍然需要让您的主机(Mac)看到您想要从本地主机(您的Mac)访问的一个端口。

请参阅Andrew Odewahn的 “ 使用boot2docker在Mac或Windows上运行Docker ”:

在这里输入图像说明

这样,你不必知道你的机器的IP是什么。
(你可以看到docker-machine ls后跟docker-machine ip <name>