tar (дочерний): prometheus-2.8.1.linux-amd64.tar.gz: невозможно открыть: нет такого файла или каталога - PullRequest
0 голосов
/ 11 июня 2019

При сборке из Dockerfile я получаю сообщение об ошибке:

tar (child): prometheus-2.8.1.linux-amd64.tar.gz: Cannot open: No such file or directory

Но я выполнил команду RUN ls -lsa перед tar, а вывод

Step 7/20 : RUN ls -lsa
 ---> Running in 6d417da0b003
total 37928
    8 drwxr-xr-x.  1 root root     4096 Jun 10 14:08 .
    8 drwxr-xr-x.  1 root root     4096 Jun 10 14:08 ..
    4 -rwxr-xr-x.  1 root root        0 Jun 10 14:08 .dockerenv
    8 drwxr-xr-x.  2 root root     4096 May  6 00:00 bin
    8 drwxr-xr-x.  2 root root     4096 Mar 28 09:12 boot
    0 drwxr-xr-x.  5 root root      340 Jun 10 14:08 dev
    8 drwxr-xr-x.  1 root root     4096 Jun 10 14:08 etc
    8 drwxr-xr-x.  2 root root     4096 Mar 28 09:12 home
    8 drwxr-xr-x.  8 root root     4096 May  6 00:00 lib
    8 drwxr-xr-x.  2 root root     4096 May  6 00:00 lib64
    8 drwxr-xr-x.  2 root root     4096 May  6 00:00 media
    8 drwxr-xr-x.  2 root root     4096 May  6 00:00 mnt
    8 drwxr-xr-x.  2 root root     4096 May  6 00:00 opt
    0 dr-xr-xr-x. 98 root root        0 Jun 10 14:08 proc
37780 -rw-r--r--.  1 root root 38682609 Mar 28 19:19 prometheus-2.8.1.linux-arm64.tar.gz
    8 drwx------.  1 root root     4096 Jun 10 14:08 root
    8 drwxr-xr-x.  3 root root     4096 May  6 00:00 run
    8 drwxr-xr-x.  2 root root     4096 May  6 00:00 sbin
    8 drwxr-xr-x.  2 root root     4096 May  6 00:00 srv
    0 dr-xr-xr-x. 13 root root        0 Jun 10 14:06 sys
    8 drwxrwxrwt.  1 root root     4096 Jun 10 14:08 tmp
    8 drwxr-xr-x.  1 root root     4096 May  6 00:00 usr
    8 drwxr-xr-x.  1 root root     4096 May  6 00:00 var
Removing intermediate container 6d417da0b003
 ---> 3c7f16cdd4ad

Так чтоtar-файл уже присутствует в текущем каталоге.Что не так с командой tar?

Мой Dockerfile -

FROM debian:9

ARG PROMETHEUS_VERSION=2.8.1
ARG ARCH=arm64


RUN apt-get update 
RUN  apt-get install -y wget 
RUN  wget https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/prometheus-${PROMETHEUS_VERSION}.linux-arm64.tar.gz 
RUN ls -lsa
RUN echo "$PWD"
RUN tar jxvf  prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}.tar.gz -C prometheus-${PROMETHEUS_VERSION}.linux-arm64/prometheus 
RUN ls -lsa
RUN cp prometheus-$PROMETHEUS_VERSION.linux-arm64/prometheus .

Пожалуйста, помогите мне с решением.

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

При извлечении файла tar вы используете это имя:

ПРОМЕТЕЙ-2.8.1.linux- amd64 .tar.gz

Но вы скачиваете другой файл:

ПРОМЕТЕЙ-2.8.1.linux- arm64 .tar.gz

amd64 -> arm64

Это происходит потому, что иногда вы используете переменную $ARCH, а иногда - arm64. Замените везде, где вы используете arm64, на переменную $ARCH. И если вы хотите использовать другую арку, вы можете передать этот флаг на docker build:

- build-arg arch = arm64

0 голосов
/ 11 июня 2019

Пусть попробуют:

RUN tar jxvf prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}.tar.gz -C prometheus-${PROMETHEUS_VERSION}.linux-arm64/prometheus

Вместо:

RUN mkdir -p prometheus-${PROMETHEUS_VERSION}.linux-arm64/prometheus && RUN tar -zxf prometheus-${PROMETHEUS_VERSION}.linux-${ARCH}.tar.gz -C prometheus-${PROMETHEUS_VERSION}.linux-arm64/prometheus --strip-components=1

Флаг --strip-components:
--strip-components=NUMBER strip NUMBER leading components from file

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