2016-06-12 201 views
1

我使用码头工和码头工合成一个clojure和一个节点应用程序,旁边postgres。如何配置docker撰写正确公开端口?

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

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"] 

最后是搬运工,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

+0

你正在使用什么操作系统? –

+0

我目前使用的是Mac OSX –

+0

如果你使用的是docker工具箱,你需要的ip是192.168.99.100:8080。这是docker工具箱虚拟机的默认IP地址 –

回答

4

随着boot2docker(在Mac或Windows),从localhost访问任何端口,你必须为了配置您的VirtualBox虚拟机端口转发那端口从虚拟机到主机。

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

Andrew Odewahn例如,见“Using boot2docker to run Docker on a Mac or Windows”:

enter image description here

这样的话,你不必找出你的机器的IP是什么。
(你可以在docker-machine ls后面看到docker-machine ip <name>