如何使用docker-compose设置主机名?
我已经用docker-compose设置了一些docker-container。
当我通过docker-compose up
我可以通过他们暴露的端口访问他们,例如localhost:9080
和localhost:9180
。
我真的想通过主机名来访问它们, localhost:9180
应该可以通过api.local
访问localhost:9180
主机,通过webservice.local
访问localhost:9080
我怎样才能做到这一点? 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
文件只parsing主机名。 因此它只能parsinglocalhost
到127.0.0.1
。
如果你像api.local 127.0.0.1:9180
添加一行,它不会工作。
唯一能做的就是在主机上设置一个反向代理(如nginx)来监听api.local
,并将请求转发到localhost:9180
。
你应该检查一下该项目。 通过添加一个VIRTUAL_HOST
环境variables,容器可以通过域名访问。 例如,如果您设置VIRTUAL_HOST=web.docker
,则可以通过http://web.docker
访问容器。
项目主页有更多的信息。 这是一个年轻的项目,但正在积极发展。 Docker for Mac和dlite已经出现/成熟,现在也计划支持macOS。