Golang на основе docker изображение работает, но не на основе изображения - PullRequest
2 голосов
/ 25 февраля 2020

Я могу запустить docker образ веб-приложения при использовании базы golang:1.13, но не при использовании scratch. Рабочий Dockerfile:

FROM golang:1.13 AS builder
WORKDIR /app
COPY . .
RUN go build -o server

FROM golang:1.13
COPY --from=builder /app/server /app/server
COPY --from=builder /app/credentials/service-account.json /app/credentials/service-account.json
ENTRYPOINT ["/app/server"]

Но когда я изменяю конечную базу изображений на scratch (строка 6) следующим образом:

FROM golang:1.13 AS builder
WORKDIR /app
COPY . .
RUN go build -o server

FROM scratch # <-- CHANGED
COPY --from=builder /app/server /app/server
COPY --from=builder /app/credentials/service-account.json /app/credentials/service-account.json
ENTRYPOINT ["/app/server"]

я получаю ошибку standard_init_linux.go:211: exec user process caused "no such file or directory".

Чтобы создать образ docker, я использую docker build -t myimage ., а для запуска образа я использую docker run --rm -p 8080:8080 myimage:latest.

Приложение представляет собой веб-API на основе Go, использующий Каркас Gin и учетная запись службы GCP для доступа к службам GCP (файл JSON, который я копирую при сборке.)

1 Ответ

3 голосов
/ 25 февраля 2020

Если вы не используете CGO (как упомянуто @jakub), попробуйте отключить CGO в вашей сборке.

Так что измените эту строку в Dockerfile:

#RUN go build -o server
RUN CGO_ENABLED=0 go build -o server
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...