Docker与golang-onbuild构成无法在代理之后下载

在没有代理的机器上,我写了main.go,Dockerfile和docker-compose.yml,像docker-compose.yml这样成功完成。

 package main import ( "fmt" "github.com/garyburd/redigo/redis" "log" "net/http" ) func main() { redi, err := redis.Dial("tcp", "redis:6379") /// SNIP /// log.Fatal(http.ListenAndServe(":5000", nil)) } 

Dockerfile

 # Dockerfile FROM golang:onbuild EXPOSE 5000 

泊坞窗,compose.yml

 # docker-compose.yml version: '2' services: web: build: . ports: - 5000:5000 depends_on: - redis redis: image: redis 

但是,(当然)它们不在代理之后的机器上运行。 我修改了Dockerfile和docker-compose.yml,

Dockerfile

 # Dockerfile FROM golang:onbuild ENV HTTP_PROXY http://proxy.mycompany.com:10080 ENV HTTPS_PROXY http://proxy.mycompany.com:10080 ENV http_proxy http://proxy.mycompany.com:10080 ENV https_proxy http://proxy.mycompany.com:10080 EXPOSE 5000 

泊坞窗,compose.yml

 # docker-compose.yml version: '2' services: web: build: . ports: - 5000:5000 volumes: - ".:/redis-go-sample" depends_on: - redis environment: - HTTP_PROXY=${HTTP_PROXY} - HTTPS_PROXY=${HTTP_PROXY} - http_proxy=${HTTP_PROXY} - https_proxy=${HTTP_PROXY} redis: image: redis 

结果是;

 Building web Step 1/6 : FROM golang:onbuild # Executing 3 build triggers... Step 1/1 : COPY . /go/src/app ---> Using cache Step 1/1 : RUN go-wrapper download ---> Running in 8e311bec859c + exec go get -v -d github.com/garyburd/redigo (download) # cd .; git clone https://github.com/garyburd/redigo /go/src/github.com/garyburd/redigo Cloning into '/go/src/github.com/garyburd/redigo'... fatal: unable to access 'https://github.com/garyburd/redigo/': Could not resolve host: github.com package github.com/garyburd/redigo/redis: exit status 128 ERROR: Service 'web' failed to build: The command '/bin/sh -c go-wrapper download' returned a non-zero code: 1 

正如最后一条错误消息所说的,我猜这个问题是由golang-onbuild或go-wrapper处理代理env造成的。

我怎样才能解决这个问题?

运行容器时使用环境参数,而不是在构build时使用。 在你的情况下,build立图像失败。 你需要使用构build参数。 可以将构build参数添加到撰写文件中,如下所示:

 version: '2' services: web: build: context: . args: - HTTP_PROXY: http://proxy.mycompany.com:10080 - HTTPS_PROXY: http://proxy.mycompany.com:10080 - http_proxy: http://proxy.mycompany.com:10080 - https_proxy: http://proxy.mycompany.com:10080 ports: - 5000:5000 volumes: - ".:/redis-go-sample" depends_on: - redis ...