Извлечение gz в Dockerfile - PullRequest
       7

Извлечение gz в Dockerfile

0 голосов
/ 29 августа 2018

У меня есть структура каталогов следующим образом.

- app
  Dockerfile
   - target
     - test_app.tar.gz

Извлечение tar.gz будет иметь следующий вид,

- lib
- conf
- bin

Я хотел бы извлечь и добавить папку lib / * в образ докера.

FROM docker.hub.com/alpine/jdk1.8:latest  

RUN mkdir -p /service \
            /service/app_lib \
            /service/lib

COPY target/test_app.tar.gz /service/app_lib/
RUN cd  /service/app_lib/ 
RUN tar -xzf test_app.tar.gz
RUN rm test_app.tar.gz
RUN cd lib
COPY * /service/lib/
RUN rm app_lib

Получение нижеуказанной ошибки с этим.

Step 5/11 : RUN tar -xzf test_app.tar.gz
 ---> Running in edde27a1cc60
tar (child): test_app.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

Не уверен, что с этим не так.

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Эффект команды RUN cd сохраняется только для этой единственной строки, на следующей строке вы вернулись в /, поэтому файл не может быть найден. Используйте WORKDIR вместо RUN cd ..., и все должно работать так, как вы ожидаете. Или вы можете поместить все это в одну RUN команду, такую ​​как

RUN cd /service/app_lib/ && tar -xzf test_app.tar.gz && rm test_app.tar.gz

То же самое относится к следующей RUN cd lib части.

https://docs.docker.com/engine/reference/builder/#workdir

0 голосов
/ 29 августа 2018

Директива ADD автоматически распакует .gz при сборке

ADD target/test_app.tar.gz /service/app_lib
# Clean up
RUN rm -rf /service/app_lib/conf \
           /service/app_lib/bin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...