✨ 新功能: - 一键自动化部署脚本 (build-infra.sh) - 统一端口配置 (3开头端口,避免冲突) - 多平台Docker构建支持 (AMD64 + ARM64) - Jenkins Configuration as Code (零手动配置) - 完整的服务验证和健康检查 🏗️ 核心组件: - Jenkins LTS + JDK21 (端口38080) - Gitea 1.21 (端口33000, SSH: 32222) - Docker Registry + UI (端口35001/35002) - 统一cicd-network网络 📋 管理工具: - 自动化部署和验证脚本 - 健康检查和日志管理工具 - 完整的文档和故障排查指南 🎯 已验证功能: - 所有服务正常启动和运行 - API和Web界面完全可访问 - 多平台构建环境就绪 - 完整的CI/CD流水线支持 适用环境: Mac Studio M2 + Docker Desktop
123 lines
2.9 KiB
Bash
Executable File
123 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
||
# 修复Docker TLS证书问题
|
||
|
||
log() { echo -e "\033[0;32m[INFO]\033[0m $1"; }
|
||
warn() { echo -e "\033[1;33m[WARN]\033[0m $1"; }
|
||
|
||
log "=== Docker TLS证书问题修复 ==="
|
||
|
||
# 方案1:更新DNS设置
|
||
fix_dns() {
|
||
log "修复DNS设置..."
|
||
cat >> ~/.docker/daemon.json.tmp << 'EOF'
|
||
{
|
||
"experimental": true,
|
||
"features": {
|
||
"buildkit": true
|
||
},
|
||
"insecure-registries": [
|
||
"localhost:5001"
|
||
],
|
||
"dns": ["8.8.8.8", "1.1.1.1", "208.67.222.222"]
|
||
}
|
||
EOF
|
||
mv ~/.docker/daemon.json.tmp ~/.docker/daemon.json
|
||
log "✅ DNS设置已更新"
|
||
}
|
||
|
||
# 方案2:临时绕过证书验证
|
||
bypass_tls() {
|
||
warn "临时绕过TLS验证 (仅用于测试)"
|
||
export DOCKER_CLIENT_TIMEOUT=120
|
||
export COMPOSE_HTTP_TIMEOUT=120
|
||
|
||
# 创建临时配置
|
||
mkdir -p ~/.docker/certs.d/registry-1.docker.io
|
||
echo '{"insecure-registry": true}' > ~/.docker/certs.d/registry-1.docker.io/config.json
|
||
}
|
||
|
||
# 方案3:ExpressVPN设置提示
|
||
vpn_settings() {
|
||
log "ExpressVPN优化建议:"
|
||
echo "1. 打开ExpressVPN应用"
|
||
echo "2. 点击设置(⚙️)"
|
||
echo "3. 进入'高级设置'"
|
||
echo "4. 禁用'阻止WebRTC'"
|
||
echo "5. 禁用'威胁管理器'"
|
||
echo "6. 选择'自动'协议"
|
||
echo "7. 重新连接到美国洛杉矶服务器"
|
||
echo ""
|
||
echo "或者临时断开VPN测试Docker:"
|
||
echo "expressvpn disconnect"
|
||
}
|
||
|
||
# 方案4:使用HTTP代理
|
||
setup_proxy() {
|
||
log "配置HTTP代理..."
|
||
|
||
# 检查是否有其他代理
|
||
if [ -n "$HTTP_PROXY" ] || [ -n "$HTTPS_PROXY" ]; then
|
||
log "检测到现有代理设置"
|
||
env | grep -i proxy
|
||
fi
|
||
|
||
# 创建代理配置
|
||
cat >> ~/.docker/config.json.tmp << 'EOF'
|
||
{
|
||
"proxies": {
|
||
"default": {
|
||
"httpProxy": "",
|
||
"httpsProxy": "",
|
||
"noProxy": "localhost,127.0.0.1,::1"
|
||
}
|
||
}
|
||
}
|
||
EOF
|
||
mv ~/.docker/config.json.tmp ~/.docker/config.json
|
||
}
|
||
|
||
# 测试连接
|
||
test_connection() {
|
||
log "测试Docker Hub连接..."
|
||
|
||
# 测试1:基本连接
|
||
if curl -m 10 -s https://index.docker.io/v1/ > /dev/null; then
|
||
log "✅ Docker Index连接正常"
|
||
else
|
||
warn "❌ Docker Index连接失败"
|
||
fi
|
||
|
||
# 测试2:Registry连接
|
||
if timeout 10 docker info | grep -q "Registry"; then
|
||
log "✅ Docker daemon正常"
|
||
else
|
||
warn "❌ Docker daemon异常"
|
||
fi
|
||
}
|
||
|
||
# 主函数
|
||
main() {
|
||
echo "选择修复方案:"
|
||
echo "1) 更新DNS设置"
|
||
echo "2) 临时绕过TLS验证"
|
||
echo "3) 显示ExpressVPN设置建议"
|
||
echo "4) 配置代理设置"
|
||
echo "5) 测试连接"
|
||
echo "6) 全部执行"
|
||
|
||
read -p "请选择 (1-6): " choice
|
||
|
||
case $choice in
|
||
1) fix_dns ;;
|
||
2) bypass_tls ;;
|
||
3) vpn_settings ;;
|
||
4) setup_proxy ;;
|
||
5) test_connection ;;
|
||
6) fix_dns; bypass_tls; setup_proxy; test_connection ;;
|
||
*) echo "无效选择" ;;
|
||
esac
|
||
|
||
log "修复完成!请重启Docker: orbctl restart -a"
|
||
}
|
||
|
||
main "$@" |