Для создания комбинированного изображения вы можете воспользоваться любым из предложенных путей:
- Создание объединенного
Dockerfile
с шагами настройки для обоих изображений и создание собственного настраиваемого изображения.
- Создание
Dockerfile
извлечения из изображения 1 (более «сложного») и добавление команд, необходимых для изображения 2.
Второй подход предпочтительнее, так как вы начинаете с заведомо хорошего изображения, не имея необходимости начинать с нуля. Кроме того, вам могут понадобиться только минимальные изменения. Чтобы это работало, оба изображения должны иметь общее базовое изображение, например, alpine
.
Изучив файлы Nckerx и Java OpenJDK Dockerfiles, вы можете увидеть, что Nginx Dockerfile довольно сложный, со многими необходимыми пакетами и шагами настройки, поэтому он лучше подходит для базового образа. Я предлагаю начать с базового образа Nginx и добавить Java сверху.
OpenJDK Java 7, 8 (стабильная версия), а также 9 и 10 (экспериментальная версия) уже доступны в репозиториях Alpine. Если нет особых требований к конкретной реализации Java, и вы довольны, скажем, OpenJDK 8, ваш объединенный Dockerfile
может быть таким простым:
FROM nginx:alpine
RUN apk add openjdk8
Если вам нужна конкретная версия Java, которая недоступна в репозиториях Alpine, обычно это вопрос загрузки сжатого дистрибутива Alpine Java, его распаковки и установки JAVA_HOME
соответственно. Например, см. OpenJDK 13 Alpine Dockerfile .