2015-10-07 43 views
3

我已经用docker-compose设置了一些docker-containers。如何使用docker-compose设置主机名?

当我通过docker-compose up启动它们时,我可以通过其暴露的端口访问它们,例如, localhost:9080localhost:9180

我真的想通过主机名来访问他们的localhost:9180应通过api.local是在我的本地accessable和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 

回答

1

不,你不能这样做。

/etc/hosts file只解析主机名。因此它只能解决localhost127.0.0.1

如果你添加一条线,如 api.local 127.0.0.1:9180它不会工作。

唯一能做的就是在主机上设置一个反向代理(如nginx),监听api.local并将请求转发到localhost:9180

1

您应该看看dory项目。通过添加一个VIRTUAL_HOST环境变量,可以通过域名访问容器。例如,如果您设置VIRTUAL_HOST=web.docker,则可以通过http://web.docker访问容器。

项目主页有更多信息。这是一个年轻的项目,但正在积极发展。 Docker for Mac和dlite已经出现/成熟,现在也计划支持macOS。

+0

作为后续,macOS支持已实施并正在运行。 –

相关问题