在使用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 buildordocker_proxy run来使用代理

或者通过配置添加代理

https://docs.docker.com/network/proxy/

参考链接

  1. https://docs.docker.com/network/proxy/