Разархивируйте локальный файл и удалите оригинал в сборке образа Dockerfile.
Я пытаюсь распаковать файл и удалить исходный, сжатый архив в моем
Dockerfile
инструкции по сборке образа. Мне нужно сделать это, потому что рассматриваемый файл больше, чем ограничение, установленное Github для больших размеров файлов (см. здесь). Решение, которое я преследую, состоит в том, чтобы сжать файл (перенеся его под
2GB
limit), а затем распаковывать, когда я создаю приложение. Я знаю, что создавать большие образы и планировать интеграцию внешней базы данных в проект — это плохая практика, но сейчас у меня нет на это времени.
Пробовал разные варианты, но безуспешно.
- Сжать файл в
.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
добавил файлы в образ.
- Следуя этому совету , я сжал большой файл и попытался использовать
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
следует распаковать его, т.е. из документов.
Как я могу решить эти требования?