Разархивируйте локальный файл и удалите оригинал в сборке образа Dockerfile.

Я пытаюсь распаковать файл и удалить исходный, сжатый архив в моем Dockerfileинструкции по сборке образа. Мне нужно сделать это, потому что рассматриваемый файл больше, чем ограничение, установленное Github для больших размеров файлов (см. здесь). Решение, которое я преследую, состоит в том, чтобы сжать файл (перенеся его под 2GBlimit), а затем распаковывать, когда я создаю приложение. Я знаю, что создавать большие образы и планировать интеграцию внешней базы данных в проект — это плохая практика, но сейчас у меня нет на это времени.

Пробовал разные варианты, но безуспешно.

  1. Сжать файл в .zipформатировать и использовать apt-getустановить, а затем распаковать файл с помощью unzip:
      FROM python:3.8-slim

#install unzip
RUN apt-get update && apt-get install unzip

WORKDIR /app

COPY /data/databases/file.db.zip /data/databases

RUN unzip /data/databases/file.db.zip && rm -f /data/databases/file.db.zip

COPY ./ ./

Это терпит неудачу с unzip: cannot find or open /data/databases/file.db.zip, /data/databases/file.db.zip.zip or /data/databases/file.db.zip.ZIP.Я не понимаю этого, как я думал COPYдобавил файлы в образ.

  1. Следуя этому совету , я сжал большой файл и попытался использовать Dockerродная команда для его распаковки, т.е.:
      FROM python:3.8-slim

WORKDIR /app

ADD /data/databases/file.db.gz /data/databases/file.db

COPY ./ ./

Хотя это компилируется без ошибок, файл не распаковывается, что я вижу с помощью docker exec -t -i clean-dash /bin/bashдля изучения структуры каталогов изображений. Так как большой файл gzipфайл, я так понимаю ADD следует распаковать его, т.е. из документов.

Как я могу решить эти требования?

0 ответов

Другие вопросы по тегам