gpt4 book ai didi

docker - Jenkinsfile管道:到达主机sidecar的ip

转载 作者:行者123 更新时间:2023-12-02 20:01:40 24 4
gpt4 key购买 nike

我正在使用Kubernetes插件在GKE上运行Jenkins。我添加了一个postgres容器作为jnlp代理容器的补充。可从代理通过localhost:5432进行访问。我还将GKE节点的Docker套接字和bin安装在代理中,以便启动“姐妹”容器。这也很好。

现在,我要执行以下操作:

pipeline {

stages {

stage('pytest') {

agent {
docker {
image "<image created in a previous stage>"
args '--add-host=database:\$(hostname\\ -i)'
}
}

steps {
// use postgres in sidecar of jnlp agent
// e.g. on `database:5432`
}
}
}
}

手动执行此操作效果很好,但在Jenkins中,以上操作失败并显示以下内容:
Error: invalid argument "database:$(hostname -i)" for --add-host=database:$(hostname -i): invalid IP address in add-host: "$(hostname -i)"

有没有人对如何摆脱以上想法?还是解决该问题的一种完全不同的方式?

我在GKE上没有可用的Docker 18.03+(卡在 17.03.2-ce上),所以我不能做 host.docker.internal docker run --network host也不执行任何操作。

最佳答案

如果是sidecar,则不需要$(hostname),则应该可以与localhost:5432连接。容器中的容器共享相同的地址空间。

另一种选择是在您的pod规范中使用 initContainers 设置所需的文件。您可以编写如下的bash脚本:

#!/bin/bash
cat <<EOF
pipeline {

stages {

stage('pytest') {

agent {
docker {
image "<image created in a previous stage>"
args "--add-host=database:${HOSTMAME}"
}
}

steps {
// use postgres in sidecar of jnlp agent
// e.g. on `database:5432`
}
}
}
}
EOF > /your-config-file
${HOSTNAME}是容器中的环境变量。

关于docker - Jenkinsfile管道:到达主机sidecar的ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53048375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com