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

标签 docker localhost hostname docker-compose

我已经使用 docker-compose 设置了一些 docker-container。

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

我真的很想通过主机名访问它们,localhost:9180 应该可以在我的本地主机上通过 api.locallocalhost: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/

相关文章:

docker - 当我尝试从docker文件运行命令以查找和删除特定日志时,为什么显示 “File not found”?

docker - 无法从外部访问暴露的 docker 端口

docker - 我如何找到从docker运行的hadoop集群?

python - 基于 IP 或主机名的 Django 设置

java - 客户端java中的服务器地址

javascript - 获得网站二级域名的方法?

docker - 在docker build之后。容器未显示,为什么?

ruby-on-rails - Rails 服务器正在运行,但无法连接到 localhost :3000

apache - Mac 上的 Apache 虚拟主机的通配符域

.net - 当 regsvr32 命令成功执行但 com 组件未注册时,如何在 docker 内注册 com 组件?