wsl 中构建 Golang 项目时网络代理引起构建卡壳的问题
问题背景和描述
Windows 系统中使用 Clash-for-Windows 作为代理应用,同时 wsl  中设置了系统代理,配置如下:
export http_proxy="http://192.168.1.3:7890/"
export https_proxy="http://192.168.1.3:7890/"
export ftp_proxy="http://192.168.1.3:7890/"
export no_proxy="127.0.0.1,localhost"
export HTTP_PROXY="http://192.168.1.3:7890/"
export HTTPS_PROXY="http://192.168.1.3:7890/"
export FTP_PROXY="http://192.168.1.3:7890/"
export NO_PROXY="127.0.0.1,localhost"
我的目标是构建 Golang 应用,涉及到的 Dockerfile 如下:
FROM golang:1.18.4 AS BACK
WORKDIR /go/src/bus
COPY . .
RUN ./build.sh
其中 build.sh 内容如下:
#!/bin/bash
#try to connect to google to determine whether user need to use proxy
curl www.google.com -o /dev/null --connect-timeout 5 2 > /dev/null
if [ $? == 0 ]
then
    echo "Successfully connected to Google, no need to use Go proxy"
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o server .
else
    echo "Google is blocked, Go proxy is enabled: GOPROXY=https://goproxy.cn,direct"
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GOPROXY=https://goproxy.cn,direct go build -ldflags="-w -s" -o server .
fi
此时正常构建会卡到如下步骤:
[2/3] STEP 4/4: RUN ./build.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15157    0 15157    0     0    504      0 --:--:--  0:00:30 --:--:--     0
这一步几个小时都不会有好转。
解决方法
问题背景和问题描述都清楚之后,怎么解决呢?尝试过如下方法:
- 等待更长时间,但三个小时都不起效果。
- 更换 Podman,经测试同样如此。
这就很迷惑了,猜测可能是网络问题,所以经过不断尝试发现如下解决方案。
- 
暂时将 Clash-for-Windows的Allow LAN关闭;
- 
执行构建命令; 
- 
等待出现如下日志: [2/3] STEP 4/4: RUN ./build.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0 curl: (28) Connection timed out after 5001 milliseconds
- 
打开 Clash-for-Windows的Allow LAN。
然后就可以正常下载项目依赖并构建了。至于为什么会出现这种状况,还需要再了解下 Docker 网络相关的内容了。