我已经使用docker-compose设置了几个docker-container。
当我通过docker-compose up
启动它时,我可以通过其公开的端口访问它们,例如localhost:9080
和localhost: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;
}
答案 0 :(得分:1)
不,你不能这样做。
/etc/hosts
文件仅解析主机名。因此,它只能解析localhost
到127.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已经出现/成熟。