LittleBuster
@LittleBuster

Ошибки скачивания зависимостей в go контейнере?

Здравствуйте. Возникает проблема при разворачивании контейнеров с multistage сборкой golang приложений. Для своих сервисов я описываю подобные docker файлы:

######## Start first stage for building #######

FROM golang:1.14 as builder

WORKDIR $GOPATH/src/github.com/myrepo/tgbot
COPY ./tgbot/ .
RUN go get -v -d

RUN CGO_ENABLED=0 GOOS=linux go build -v -a -installsuffix cgo -o app .

######## Start a new stage from scratch #######

FROM alpine:3.11.3

LABEL maintainer="  <@gmail.com>"

RUN apk update && \
    apk upgrade && \
    apk add ca-certificates && update-ca-certificates

RUN apk add --update tzdata
ENV TZ=Asia/Novosibirsk

RUN rm -rf /var/cache/apk/*

WORKDIR /root/

COPY --from=builder /go/src/github.com/myrepo/tgbot/app .
RUN mkdir /var/log/myrepo/

CMD ["./app"]

Проблема возникает на этапе скачивания зависимостей go get -v -d.
То он не может получить доступ к адресу
unrecognized import path "go.uber.org/dig": https fetch: Get "https://go.uber.org/dig?go-get=1": dial tcp [2a00:1450:400f:80d::2013]:443: connect: cannot assign requested address

То
# cd .; git clone -- https://go.googlesource.com/net /go/src/golang.org/x/net
Cloning into '/go/src/golang.org/x/net'...
fatal: unable to access 'https://go.googlesource.com/net/': Could not resolve host: go.googlesource.com
package golang.org/x/net/context: exit status 128


и приходится по несколько раз перезапускать docker-compose build чтобы он собрал все контейнеры.
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ответы на вопрос 1
@asmyasnikov
Не "нарисовалось" решение?
У меня аналогичная проблема для случая кросс-билда в CI/CD (на хосте x86_64 в контейнере arm32v7). Этой проблемы нет в arm64v8 (хотя он существенно дольше собирает образ, чем в нативной архитектуре).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы