如何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>
)