在我的Jenkins服务器(与正式的詹金斯图像一起部署)上,我需要运行以下代码来构建我的码头映像
def buildDockerImage() {
sh "docker build --network=host -t $DOCKER_REPO ."
}注意--network=host选项。
现在我的问题是,在我的开发笔记本电脑上,我不需要这个选项来建立我的形象。为什么会这样呢?为什么我不需要它在我的笔记本电脑,但我需要它在詹金斯服务器?Jenkins服务器托管在J弹性环境中,如下所示:
env:
topology:
nodes:
- image: jenkins/jenkins:lts
count: 1
cloudlets: 32
nodeGroup: cpDocker的安装方式如下:
mv /etc/init.d/kmod /etc/init.d/kmod.back
apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update
apt -y install docker-ce docker-ce-cli containerd.io
service docker start
usermod -aG docker jenkins在没有网络选项的情况下,我是否需要配置一些东西来使其发生?
发布于 2019-10-30 15:05:45
误解发生在詹金斯已经预装、码头工具安装之后的那个地方。J弹性提供使用变量和特殊的重定向。默认情况下,Jenkins被从端口80重定向到8080,您可以通过已经生成的环境名称直接到达它。您应该遵循的方式是通过特殊的'JELASTIC_EXPOSE=DISABLED‘变量禁用自动重定向并使用公共IP。如果您不喜欢使用公共IP,请查找端点功能。
关于这一点的一切都在端口文章中描述。
发布于 2019-10-31 06:21:28
基于J弹性的回答,我在安装Jenkins CI/CD环境的jps清单中添加了以下步骤:
actions:
setupJenkinsForDocker:
- api:
- method: jelastic.environment.control.AddContainerEnvVars
params:
nodeGroup: cp
vars:
JELASTIC_EXPOSE: DISABLED
- api:
- method: jelastic.environment.control.AddEndpoint
params:
nodeId: ${nodes.cp.id}
privatePort: 8080
protocol: TCP
name: jenkins/jenkins当然,这意味着我调整了所有在jenkins环境中触发一些作业的web挂钩,因为这需要在我的jenkins端点中设置一个端口。
现在,我不再需要设置选项--network=host当我建立一个码头形象需要互联网连接。
https://stackoverflow.com/questions/58603304
复制相似问题