2017-11-23 14 views
0

프록시가없는 시스템에서 main.go, Dockerfile 및 docker-compose.yml과 같이 작성했으며 docker-compose up이 성공적으로 완료되었습니다.golang-onbuild로 도커 작성이 프록시 뒤에서 다운로드되지 않습니다.

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