Я могу запустить 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, который я копирую при сборке.)