When using a Go program inside of a docker swarm service I get a 400 status and an error message stream ID 1; PROTOCOL_ERROR
when I call a client.Get(url)
) I get a 200 and the results when I go run *.go
. I use a "Bundle of CA Root Certificates" inside of the container from Mozilla. Any Help Appreciated. My code is below.
client := &http.Client{Timeout: 30 * time.Second, Transport: &http.Transport{
DisableCompression: true,
DisableKeepAlives: true,
}}
r, err := client.Get(url)
if err != nil {
return err
}
defer r.Body.Close()
bodyBytes, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Println(url, err) // The Google Search url and err: stream error: stream ID 1; PROTOCOL_ERROR
return err
}
fmt.Println(r.StatusCode, string(bodyBytes))
return json.NewDecoder(r.Body).Decode(target)
My Dockerfile:
FROM scratch
ADD ca-certificates.crt /etc/ssl/certs/
ENV MODE=production
ADD main /
CMD ["/main"]
Edit: Output from Debug
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport creating client conn 0xc42030b340 to 172.217.2.234:443
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote SETTINGS len=18, settings: ENABLE_PUSH=0, INITIAL_WINDOW_SIZE=4194304, MAX_HEADER_LIST_SIZE=10485760
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote WINDOW_UPDATE len=4 (conn) incr=1073741824
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport encoding header ":authority" = "www.googleapis.com"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport encoding header ":method" = "GET"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport encoding header ":path" = "/customsearch/v1?key=hidingmykey&cx=hidingmycx&q=liquid+nitrogen&num=10&start=1"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport encoding header ":scheme" = "https"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport encoding header "user-agent" = "Go-http-client/2.0"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote HEADERS flags=END_STREAM|END_HEADERS stream=1 len=140
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read SETTINGS len=18, settings: MAX_CONCURRENT_STREAMS=100, INITIAL_WINDOW_SIZE=1048576, MAX_HEADER_LIST_SIZE=16384
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport received SETTINGS len=18, settings: MAX_CONCURRENT_STREAMS=100, INITIAL_WINDOW_SIZE=1048576, MAX_HEADER_LIST_SIZE=16384
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote SETTINGS flags=ACK len=0
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read WINDOW_UPDATE len=4 (conn) incr=983041
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport received WINDOW_UPDATE len=4 (conn) incr=983041
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read SETTINGS flags=ACK len=0
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport received SETTINGS flags=ACK len=0
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read HEADERS flags=END_HEADERS stream=1 len=72
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: decoded hpack field header field ":status" = "400"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: decoded hpack field header field "content-type" = "text/html; charset=UTF-8"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: decoded hpack field header field "referrer-policy" = "no-referrer"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: decoded hpack field header field "content-length" = "1555"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: decoded hpack field header field "date" = "Tue, 19 Dec 2017 12:50:17 GMT"
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport received HEADERS flags=END_HEADERS stream=1 len=72
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read RST_STREAM stream=1 len=4 ErrCode=PROTOCOL_ERROR
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Transport received RST_STREAM stream=1 len=4 ErrCode=PROTOCOL_ERROR
mycontainer.1.jdl70gy26uds@moby | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote RST_STREAM stream=1 len=4 ErrCode=CANCEL