Gitlab CI-CD via Docker : 无法在另一个容器中访问 Nexus
Gitlab CI-CD via Docker : can't access Nexus in another container
我正在使用 Gitlab CI-CD 在 Docker 上使用单个 Runner(目前)构建一些项目(runner 本身是一个 docker 容器,所以我猜这是 Docker 在 Docker..)
我的问题是在构建时无法使用自己的 nexus/npm 存储库...
npm install --registry=http://153.89.23.53:8082/repository/npm-all
npm ERR! code EHOSTUNREACH
npm ERR! errno EHOSTUNREACH
npm ERR! request to http://153.89.23.53:8082/repository/npm-all/typescript/-/typescript-3.6.5.tgz failed, reason: connect EHOSTUNREACH 153.89.23.53:8082
同一个运行器在另一台服务器上工作得很好,但如果 运行 在托管 Nexus 的同一台服务器上(一切都是基于容器的),它就无法工作
Gitlab 运行器正在使用主机网络。
如果我连接到 Runner 并尝试 ping 153.89.23.53:8082 (Nexus),它会工作
root@62591008a000:/# wget http://153.89.23.53:8082
--2020-07-13 09:56:16-- http://153.89.23.53:8082/
Connecting to 153.89.23.53:8082... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7952 (7.8K) [text/html]
Saving to: 'index.html'
index.html 100%[===========================================================================================>] 7.77K --.-KB/s in 0s
2020-07-13 09:56:16 (742 MB/s) - 'index.html' saved [7952/7952]
所以我猜问题出在“第二个 docker 容器”,也就是在 runner 内部使用的容器...但我不知道应该更改什么。
注意:我或许可以将 gitlab 运行器设置为加入 nexus 网络并使用内部 IP,但是如果运行器在其他服务器上启动,这会破坏脚本...
好的,我找到了解决方案..
有一个network_mode设置可以在运行器配置中设置。默认值是网桥,而不是主机..
**config.toml**
[runners.docker]
...
volumes = ["/cache"]
network_mode = "host"
我正在使用 Gitlab CI-CD 在 Docker 上使用单个 Runner(目前)构建一些项目(runner 本身是一个 docker 容器,所以我猜这是 Docker 在 Docker..)
我的问题是在构建时无法使用自己的 nexus/npm 存储库...
npm install --registry=http://153.89.23.53:8082/repository/npm-all
npm ERR! code EHOSTUNREACH
npm ERR! errno EHOSTUNREACH
npm ERR! request to http://153.89.23.53:8082/repository/npm-all/typescript/-/typescript-3.6.5.tgz failed, reason: connect EHOSTUNREACH 153.89.23.53:8082
同一个运行器在另一台服务器上工作得很好,但如果 运行 在托管 Nexus 的同一台服务器上(一切都是基于容器的),它就无法工作
Gitlab 运行器正在使用主机网络。 如果我连接到 Runner 并尝试 ping 153.89.23.53:8082 (Nexus),它会工作
root@62591008a000:/# wget http://153.89.23.53:8082
--2020-07-13 09:56:16-- http://153.89.23.53:8082/
Connecting to 153.89.23.53:8082... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7952 (7.8K) [text/html]
Saving to: 'index.html'
index.html 100%[===========================================================================================>] 7.77K --.-KB/s in 0s
2020-07-13 09:56:16 (742 MB/s) - 'index.html' saved [7952/7952]
所以我猜问题出在“第二个 docker 容器”,也就是在 runner 内部使用的容器...但我不知道应该更改什么。
注意:我或许可以将 gitlab 运行器设置为加入 nexus 网络并使用内部 IP,但是如果运行器在其他服务器上启动,这会破坏脚本...
好的,我找到了解决方案..
有一个network_mode设置可以在运行器配置中设置。默认值是网桥,而不是主机..
**config.toml**
[runners.docker]
...
volumes = ["/cache"]
network_mode = "host"