【问题标题】:How do I configure docker compose to expose ports correctly?如何配置 docker compose 以正确公开端口?
【发布时间】:2016-06-12 04:25:44
【问题描述】:

我正在使用 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

【问题讨论】:

  • 您使用的是什么操作系统?
  • 我目前使用的是 Mac OSX
  • 如果你使用的是docker工具箱,你需要的ip是192.168.99.100:8080。这是docker工具箱虚拟机的默认ip
  • 如果您想像在 Linux 系统上一样使用 localhost,请尝试 OS X 的 docker beta。

标签: docker configuration docker-compose


【解决方案1】:

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

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

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

这样,您不必找出您机器的 IP。
(您可以通过docker-machine ls 后跟docker-machine ip <name> 看到)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    相关资源
    最近更新 更多