首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker-onbuild在代理后面的下载失败

Docker-onbuild在代理后面的下载失败
EN

Stack Overflow用户
提问于 2017-11-23 16:41:43
回答 1查看 1.1K关注 0票数 1

在没有代理的机器上,我编写了main.go、Dockerfile和docker-compose.yml,并成功地完成了docker-compose up

代码语言:javascript
复制
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

代码语言:javascript
复制
# Dockerfile
FROM golang:onbuild
EXPOSE 5000

docker-compose.yml

代码语言:javascript
复制
# docker-compose.yml
version: '2'
services:
  web:
    build: .
    ports:
      - 5000:5000
    depends_on:
      - redis
  redis:
    image: redis

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

Dockerfile

代码语言:javascript
复制
# 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

docker-compose.yml

代码语言:javascript
复制
# 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

其结果是;

代码语言:javascript
复制
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或go包装错误处理代理env造成的。

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-23 16:53:52

环境参数在运行容器时使用,而不是在构建时使用。在你的例子中,建立形象是失败的。您需要使用构建参数。构建参数可以以这样的方式添加到撰写文件中:

代码语言:javascript
复制
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
...   
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47460092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档