2017-11-23 3 views
0

プロキシのないマシンでは、main.go、Dockerfile、docker-compose.ymlのように書いてあり、docker-compose upが正常に完了しました。golang-onbuildでDocker-composeを実行すると、プロキシの後ろでダウンロードに失敗する

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 

、私は問題がプロキシENVのgolang-onbuildまたは行くラッパー取り扱いミスによって引き起こされていると思います。

どうすればこの問題を解決できますか?

答えて

2

を実行していてビルドしていないときは、環境引数が使用されます。あなたの場合、イメージの構築に失敗しています。 ビルド引数を使用する必要があります。ビルド引数は、次のように作成ファイルに追加できます。

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 
... 
+0

ありがとうございました。私はそれを試しましたが、ドッカーは "args:"行に "ERROR:yaml.scanner.ScannerError:マッピング値が許可されていません"と言っていました。あなたは何か考えていますか? – HirofumiTamori

+0

@HirofumiTamori更新ファイル。どうやら、コンテキストは別の行にある必要があります – yamenk

+0

また、args:値を " - HTTP_PROXY = http:// ..."スタイルに変更する必要があります。しかし、それはまだ動作しません。現時点では、「proxy.mycompany.comを解決できませんでした」のようにエラーメッセージが変更されました。 DNS関連の値をコンテナに渡す方法を教えてください。 – HirofumiTamori

関連する問題