我已经使用 docker-compose 设置了一些 docker-container。
当我通过 docker-compose up
启动它们时,我可以通过它们公开的端口访问它们,例如localhost:9080
和 localhost:9180
。
我真的很想通过主机名访问它们,localhost:9180
应该可以在我的本地主机上通过 api.local
和 localhost:9080< 访问
通过 webservice.local
我怎样才能做到这一点?这是 docker-compose
可以做的事情,还是我必须在我的本地主机上使用反向代理?
目前我的 docker-compose.yml
看起来像这样:
api:
build: .
ports:
- "9180:80"
- "9543:443"
external_links:
- mysql_mysql_1:mysql
links:
- booking-api
webservice:
ports:
- "9080:80"
- "9443:433"
image: registry.foo.bar:5000/webservice:latest
volumes:
- ~/.docker-history:/.bash_history
- ~/.docker-bashrc:/.bashrc
- ./:/var/www/virtual/webservice/current
最佳答案
不,你不能这样做。
/etc/hosts
文件只解析主机名。因此它只能将 localhost
解析为 127.0.0.1
。
如果你添加一行
api.local 127.0.0.1:9180
它不会工作。
你唯一能做的就是在你的主机上设置一个反向代理(比如 nginx)来监听 api.local
并将请求转发到 localhost:9180
.
关于docker - 如何使用 docker-compose 设置主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32988586/