|
|
@@ -20,9 +20,9 @@ $imageName = "amwpfiqvy/cognio"
|
|
|
|
|
|
# Docker 镜像加速源(随机选择一个,不带 https:// 前缀)
|
|
|
$dockerMirrors = @(
|
|
|
+ "docker.m.daocloud.io"
|
|
|
"docker.1panel.live"
|
|
|
"hub.rat.dev"
|
|
|
- "docker.m.daocloud.io"
|
|
|
)
|
|
|
$dockerMirror = $dockerMirrors | Get-Random
|
|
|
|
|
|
@@ -110,10 +110,33 @@ sed -i '/^FROM/a ENV PIP_ONLY_BINARY=:all:' Dockerfile
|
|
|
echo "设置代理环境变量(用于推送镜像)..."
|
|
|
export HTTP_PROXY=$buildProxy
|
|
|
export HTTPS_PROXY=$buildProxy
|
|
|
+echo "配置 Docker daemon 代理(用于 buildx 推送)..."
|
|
|
+sudo mkdir -p /etc/systemd/system/docker.service.d
|
|
|
+cat << PROXYEOF | sudo tee /etc/systemd/system/docker.service.d/proxy.conf > /dev/null
|
|
|
+[Service]
|
|
|
+Environment="HTTP_PROXY=$buildProxy"
|
|
|
+Environment="HTTPS_PROXY=$buildProxy"
|
|
|
+Environment="NO_PROXY=localhost,127.0.0.1,mirrors.aliyun.com"
|
|
|
+PROXYEOF
|
|
|
+sudo systemctl daemon-reload
|
|
|
+sudo systemctl restart docker
|
|
|
+sleep 3
|
|
|
+echo "临时禁用 IPv6(避免推送超时)..."
|
|
|
+sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
|
|
|
+sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
|
|
|
+echo "创建带代理的 buildx builder..."
|
|
|
+docker buildx rm mybuilder 2>/dev/null || true
|
|
|
+docker buildx create --name mybuilder --driver docker-container \
|
|
|
+ --driver-opt env.HTTP_PROXY=$buildProxy \
|
|
|
+ --driver-opt env.HTTPS_PROXY=$buildProxy \
|
|
|
+ --use
|
|
|
+docker buildx inspect mybuilder --bootstrap
|
|
|
+echo "验证 builder 状态..."
|
|
|
+docker buildx ls
|
|
|
echo "正在构建并推送 Docker 镜像..."
|
|
|
echo "使用镜像加速: $dockerMirror"
|
|
|
echo "使用代理: $buildProxy"
|
|
|
-docker buildx build \
|
|
|
+docker buildx build --builder mybuilder \
|
|
|
--platform linux/amd64,linux/arm64 \
|
|
|
--build-arg DOCKER_MIRROR=$dockerMirror \
|
|
|
--build-arg HTTP_PROXY=$buildProxy \
|
|
|
@@ -123,6 +146,9 @@ docker buildx build \
|
|
|
--cache-to type=local,dest=`$HOME/.buildx-cache,mode=max \
|
|
|
--push \
|
|
|
.
|
|
|
+echo "恢复 IPv6..."
|
|
|
+sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
|
|
|
+sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
|
|
|
"@
|
|
|
|
|
|
# 将脚本内容转为 base64,避免特殊字符问题
|