Я новичок в мире докеров. Итак, у меня есть Dockerfile, который выглядит примерно так:
# Base image
FROM <OS_IMAGE>
# Install dependencies
RUN zypper --gpg-auto-import-keys ref -s && \
zypper -n install git net-tools libnuma1
# Create temp user
RUN useradd -ms /bin/bash userapp
# Creating all the required folders that is required for installment.
RUN mkdir -p /home/folder1/
RUN mkdir -p /home/folder2/
RUN sudo pip install --upgrade pip
RUN python3 code_which_takes_time.py
# Many more stuff below this.
Итак, code_which_takes_time.py
требует времени для запуска, который загрузит много материала и выполнит его.
Таким образом, требование заключается в том, что всякий раз, когда мы добавляем больше операторов ниже, RUN python3 code_which_takes_time.py
будет ненужно выполнять этот скрипт на Python каждый раз при создании изображения.
Поэтому я хотел бы разделить это изображение на 2 файла Dockerfile.
- Один файл вы можете запустить только один раз. Этот файл будет занимать много времени и может быть запущен только один раз при создании образа.
- Второй будет использоваться для добавления дополнительных операторов, которые будут добавлены в виде большего количества слоев поверх существующего изображения.
Потому что, если я запускаю docker build -t "test" .
для текущего файла, он будет снова и снова запускать мой скрипт на python. Это отнимает много времени, и я не хочу запускать его снова и снова.
Мои вопросы:
- Как разделить Dockerfile, как я уже говорил выше .?
- Как я могу создать изображение с 2 файлами изображений .?
- Как мне запустить эти 2 файла?
На данный момент я делаю:
Сборка и запуск: docker build -t "test" . && docker run -it "test"
Just Build: docker build -t "test" .
Просто беги: docker run -it "test"