Dockerfile wget не работает - PullRequest
       2

Dockerfile wget не работает

0 голосов
/ 16 февраля 2019

У меня есть следующий код

RUN apt-get update
RUN apt-get install -y wget     #install wget lib
RUN mkdir -p example && cd example     #create folder and cd to folder
RUN WGET -r https://host/file.tar && tar -xvf *.tar   # download tar file to example folder and untar it in same folder
RUN rm -r example/*.tar # remove the tar file
RUN MV example/foo example/bar # rename untar directory from foo to bar

Но я получаю следующие ошибки:

/bin/sh: 1: WGET: not found
tar: example/*.tar: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now

Я новичок в докере.

Ответы [ 2 ]

0 голосов
/ 08 августа 2019

Как заявил Ntokozo, каждая команда RUN является отдельным "сеансом" в процессе сборки.Таким образом, Docker действительно предназначен для упаковки как можно большего количества команд в один RUN, что позволяет уменьшить общий размер изображения и уменьшить количество слоев.Таким образом, команда может быть написана так:

RUN apt-get update && \
    apt-get install -y wget && \
    mkdir -p example && \
    cd example/ && \
    wget -r https://host/file.tar && \
    tar -xvf *.tar && \
    rm -r example/*.tar && \
    mv example/foo example/bar
0 голосов
/ 16 февраля 2019

Каждая последующая команда RUN в вашем Dockerfile будет находиться в контексте каталога /.Следовательно, ваш файл .tar не находится в каталоге example/, он фактически будет в каталоге /, поскольку ваш "cd to the folder" ничего не будет значить для последующих команд RUN.Вместо выполнения cd example вместо wget выполните WORKDIR example, например:

RUN apt-get update
RUN apt-get install -y wget     #install wget lib
RUN mkdir -p example     # create folder and cd to folder
WORKDIR example/         # change the working directory for subsequent commands
RUN wget -r https://host/file.tar && tar -xvf *.tar   # download tar file to example folder and untar it in same folder
RUN rm -r example/*.tar # remove the tar file
RUN mv example/foo example/bar # rename untar directory from foo to bar

Или, альтернативно, добавьте cd example && ... some command перед любой командой, которую вы хотите выполнить в exampleкаталог.

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