如何使用docker-compose设置主机名?

时间:2015-10-07 09:25:28

标签: docker localhost hostname docker-compose

我已经使用docker-compose设置了几个docker-container。

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

我真的想通过主机名访问它们,localhost:9180应该可以通过api.local访问我的本地主机,localhost:9080通过webservice.local

访问docker-compose

我怎样才能实现这一目标?是docker-compose.yml可以做什么或者做什么我必须在我的localhost上使用反向代理?

目前我的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 看起来像这样:

public class ShareEntry
{
    public DateTime Date;
    public int ID;
    public int shareID;
}

public class CommentEntry
{
    public DateTime Date;
    public int ID;
    public int commentID;
}

2 个答案:

答案 0 :(得分:1)

不,你不能这样做。

/etc/hosts文件仅解析主机名。因此,它只能解析localhost127.0.0.1

如果你添加一行像 api.local 127.0.0.1:9180它不会工作。

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

答案 1 :(得分:1)

您应该查看dory项目。通过添加@param环境变量,可以通过域名访问容器。例如,如果您设置VIRTUAL_HOST,则可以VIRTUAL_HOST=web.docker到达容器。

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