如何配置 docker compose 以正确公开端口?
How do I configure docker compose to expose ports correctly?
我正在使用 docker 和 docker 组成 运行 clojure 和 node 应用程序,以及 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
访问任何端口,您必须配置 VirtualBox VM 以便 port-转发 从虚拟机到主机的那个端口。
你的端口映射是正确的,但你仍然需要让你的主机(Mac)看到你想从本地主机(你的Mac)访问的一个端口。
参见例如“Using boot2docker to run Docker on a Mac or Windows" from Andrew Odewahn:
这样,你就不用去查你机器的IP是多少了。
(您可以看到 docker-machine ls
后跟 docker-machine ip <name>
)
我正在使用 docker 和 docker 组成 运行 clojure 和 node 应用程序,以及 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
访问任何端口,您必须配置 VirtualBox VM 以便 port-转发 从虚拟机到主机的那个端口。
你的端口映射是正确的,但你仍然需要让你的主机(Mac)看到你想从本地主机(你的Mac)访问的一个端口。
参见例如“Using boot2docker to run Docker on a Mac or Windows" from Andrew Odewahn:
这样,你就不用去查你机器的IP是多少了。
(您可以看到 docker-machine ls
后跟 docker-machine ip <name>
)