在使用docker build编译go文件时,因墙原因导致编译失败.需要添加代理解决,解决方案就是在build或者run时添加环境变量
在CLI命令中添加代理
命令行上build时添加--build-arg
设置环境变量,运行容器时使用--env
设置
docker build \
--build-arg HTTP_PROXY="http://proxy.example.com:3128" \
--build-arg HTTPS_PROXY="http://proxy.example.com:3128" \
.
docker run \
--env HTTP_PROXY="http://proxy.example.com:3128" \
--env HTTPS_PROXY="http://proxy.example.com:3128" \
redis
# or (编译Go文件时请使用上面的方式)
docker build --build-arg ALL_PROXY="socks5://proxy.example.com:3128" .
docker run --env ALL_PROXY="socks5://proxy.example.com:3128" redis
进阶版
可以添加一个Alias(通过函数实现),更方便的使用上述命令
在~/.bashrc
尾部添加以下内容
docker_proxy() {
if [ "$1" = "build" ]; then
docker build \
--build-arg HTTP_PROXY="http://proxy.example.com:3128" \
--build-arg HTTPS_PROXY="http://proxy.example.com:3128" \
"${@:2}"
elif [ "$1" = "run" ]; then
docker run \
--env HTTP_PROXY="http://proxy.example.com:3128" \
--env HTTPS_PROXY="http://proxy.example.com:3128" \
"${@:2}"
else
echo "Invalid command. Usage: docker_proxy [build|run] [arguments]"
fi
}
执行source ~/.bashrc
,至此可以通过docker_proxy build
ordocker_proxy run
来使用代理
或者通过配置添加代理
https://docs.docker.com/network/proxy/