要实现不使用挂载Docker套接字使用jwilder-nginx-proxy,可以使用Docker的网络连接功能来实现。下面是一种解决方法的代码示例:
首先,创建一个网络,用于连接nginx代理容器和其他容器:
docker network create proxy
然后,创建一个nginx代理容器,将其连接到上面创建的网络:
docker run -d -p 80:80 --name nginx-proxy --net proxy -e VIRTUAL_PROTO=http -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
注意,这里使用了-v /var/run/docker.sock:/tmp/docker.sock:ro
将Docker套接字挂载到了nginx代理容器。
接下来,在需要使用代理的容器中,使用--net
参数连接到同一个网络,并设置VIRTUAL_HOST
环境变量来指定代理的域名:
docker run -d --name my-app --net proxy -e VIRTUAL_HOST=myapp.example.com my-app-image
这样,nginx代理容器会自动检测到新的容器加入网络,并根据VIRTUAL_HOST
环境变量配置代理规则。
最后,确保在DNS服务器或本地hosts文件中将myapp.example.com
解析到宿主机的IP地址,这样可以通过该域名访问到代理容器中的应用。
需要注意的是,这种方法需要确保宿主机上的Docker套接字文件/var/run/docker.sock
可读,并且需要安装docker-compose
工具来简化容器的创建和管理。
下一篇:不使用谷歌自动广告的空白空间