由于众所周知的问题,为了拉取 Github 项目,我在本地起了 clash 的服务并在指定端口监听,Drone 的 server 端和 runner 端本身可以通过添加--add-host host.docker.internal:host-gateway
这个 host 配置加上HTTP_PROXY
环境变量来访问到本机的 clash 端口,实现正常获取仓库信息的。
但 Drone 的 runner 跑 build 时,仓库的克隆操作似乎是通过再拉起一个 git 的容器,在 git 容器内完成仓库拉取的,这样就会导致我对 runner 添加的 host 配置并不会应用到 runner 内创建的容器上,无法解析host.docker.internal
这个 hostname ,导致无法拉取仓库。
报错:fatal: unable to access 'https://github.com/...': Could not resolve proxy: host.docker.internal
求助万能的 V 友,怎样才能让 runner 拉取仓库时也可以通过宿主机的代理访问?
尝试过的方案:
~/.docker/config.json
的 proxies 项,无效,原理也是为容器添加HTTP_PROXY
等环境变量。 1
IvanLi127 2022-11-10 20:56:14 +08:00 1
要不把 pipeline 的 git clone 关了,然后在第一个 step ,用 git 插件拉代码,或者直接跑个有 git 的容器去拉代码?这样应该就能通过环境变量配置代理了?
|
2
Yourshell 2022-11-10 21:37:13 +08:00 via Android 1
clash 允许局域网连接,然后用局域网的 IP
|
3
aeli 2022-11-10 22:05:59 +08:00 1
改 docker 的 deamo 的 dns 配置就行。
|
6
windyboy 2022-11-11 08:37:09 +08:00
drone 里的 localhost 是指新建 git 容器的 localhost 不是你的服务器
|
7
hiyoi 2022-11-11 09:19:15 +08:00 via Android
最近刚好涉及到 drone 。你这问题用 docker-compose 把 runner 和 server 放到同一个 network 里面就能解决
参考我这个配置 https://github.com/hiyoi/drone-local |
8
hiyoi 2022-11-11 09:25:23 +08:00 via Android
sorry ,没注意审题。
代理问题前面同学提到的方法可解 |