如何配置docker compose以正确显示端口? [英] How do I configure docker compose to expose ports correctly?
问题描述
我使用docker和docker compose与postgres一起运行clojure和一个节点应用程序。
项目包含在以下文件夹结构中。 p>
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
运行npm安装
EXPOSE 8080
CMD [npm,start ]
最后,docker-compose.yml看起来像...
frontend:
image:bradcypert / node
volumes:
- ./frontend:/usr/src/frontend
ports:
- 8080:8080
后端:
image:bradcypert / clojure
volumes:
- ./app: / usr / src / backend
ports:
- 9000:9000
links:
- postgres
postgres:
image: postgres
ports:
- 5432:5432
一个单独的原因,但前端似乎运行成功,说的是,我无法打到localhost:8080并看到的应用程序。我需要做什么使这发生?
提前感谢。
只是为了说明,正在运行的命令是 docker - 使用boot2docker(在Mac或Windows上),通过
code> localhost ,您必须配置您的VirtualBox VM为了端口转发该端口从VM到主机。
您的端口映射是正确的,但是您仍然需要向您的主机(Mac)显示您要从localhost(您的Mac)访问的一个端口。
参见例如
这样,你不必知道你的IP机器是。
(您可以看到 docker-machine ls
后跟 docker-machine ip< name& / code>)
I'm using docker and docker compose to run a clojure and a node app, alongside postgres.
The project is contained in the following folder structure.
project/
-- app/
-- -- Dockerfile
-- frontend/
-- -- /Dockerfile
-- docker-compose.yml
The app/Dockerfile
looks like so...
FROM clojure:latest
COPY . /usr/src/app
WORKDIR /usr/src/app
EXPOSE 9000
CMD ["lein", "run", "migrate", "&&","lein", "run"]
The frontend/Dockerfile
looks like so ...
FROM node:5
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN npm install
EXPOSE 8080
CMD ["npm", "start"]
And lastly the docker-compose.yml looks like...
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"
backend is failing for a separate reason, but the frontend seems to be running successfully, that being said, I'm unable to hit localhost:8080 and see the app. What do I need to do make this happen?
Thanks in advance.
Just to clarify, the command being run is docker-compose up
With boot2docker (on Mac or Windows), to access any port from localhost
, you have to configure your VirtualBox VM in order to port-forward that port from the VM into the host.
Your port mappings are correct, but you still need to make visible to your host (Mac) the one port you want to access from localhost (your Mac).
See for instance "Using boot2docker to run Docker on a Mac or Windows" from Andrew Odewahn:
That way, you don't have to find out what the IP of your machine is.
(Which you can see with docker-machine ls
followed by docker-machine ip <name>
)
这篇关于如何配置docker compose以正确显示端口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!