如何配置docker compose以正确公开端口?

时间:2016-06-12 04:25:45

标签: docker configuration docker-compose

我正在使用docker和docker compose运行一个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

1 个答案:

答案 0 :(得分:4)

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

您的端口映射是正确的,但您仍需要向主机(Mac)显示您要从localhost(您的Mac)访问的一个端口。

例如参见" Using boot2docker to run Docker on a Mac or Windows"来自Andrew Odewahn

enter image description here

这样,你就不必知道机器的IP是什么了 (您可以使用docker-machine ls后跟docker-machine ip <name>

查看