Проблемы с COPY при использовании многоступенчатых сборок Dockerfile - такого файла или каталога нет - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь преобразовать свой проект в многоэтапные сборки. Однако последний шаг всегда завершается ошибкой:

Step 11/13 : COPY --from=build /bin/grafana-server /bin/grafana-server
COPY failed: stat /var/lib/docker/overlay2/xxxx/merged/bin/grafana-server: no such file or directory

Мой Dockerfile выглядит так:

FROM golang:latest AS build

ENV SRC_DIR=/go/src/github.com/grafana/grafana/
ENV GIT_SSL_NO_VERIFY=1

COPY . $SRC_DIR
WORKDIR $SRC_DIR

# Building of Grafana
RUN \
  npm run build && \
  go run build.go setup && \
  go run build.go build

# Create final stage containing only required artifacts
FROM scratch
COPY --from=build /bin/grafana-server /bin/grafana-server

EXPOSE 3001

CMD ["./bin/grafana-server"]

Шаг build.go build выведет артефакты на ./bin/ - Ошибка довольно бесполезна, если не сказать, что файлы не существуют там, где, я думаю, они должны существовать.

Моя структура папок на моей машине:

--| ~/Documents/dev/grafana/src/grafana/grafana
--------| bin
------------| <grafan-server builds to here>

--------| deploy
------------| docker
----------------| Dockerfile

Начиная с ~/Documents/dev/grafana/src/grafana/grafana я выдаю: docker build -t grafana -f deploy/docker/Dockerfile .

1 Ответ

0 голосов
/ 27 апреля 2018

Чтобы прокомментировать мой комментарий, путь, который вы указали с помощью WORKDIR, является абсолютным и должен быть указан таким же образом в команде COPY --from=build.

Так что это может привести к следующему Dockerfile:

FROM golang:latest AS build

ENV SRC_DIR=/go/src/github.com/grafana/grafana/
ENV GIT_SSL_NO_VERIFY=1

COPY . $SRC_DIR
WORKDIR $SRC_DIR

# Building of Grafana
RUN \
  npm run build && \
  go run build.go setup && \
  go run build.go build

# Create final stage containing only required artifacts
FROM scratch

ENV SRC_DIR=/go/src/github.com/grafana/grafana/
WORKDIR $SRC_DIR

COPY --from=build ${SRC_DIR}/bin/grafana-server ${SRC_DIR}/bin/grafana-server

EXPOSE 3001

CMD ["./bin/grafana-server"]

(только частично проверено)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...