Добавить Java в докер NGINX или добавить NGINX в докер Java на Alpine? - PullRequest
0 голосов
/ 24 мая 2019

Мне нужно создать контейнер Docker (ощущается как N00b), который запускает приложение Java, запущенное веб-сервером nginx. По причинам, не подлежащим обсуждению, мне нужно поместить их в один контейнер.

Я бы хотел использовать Alpine для этого. Я нашел оба изображения, которые содержат Alpine с установленным nginx и Alpine с установленным JDK. Мне нужно объединить оба.

Какой мой лучший курс действий? Начните с контейнера nginx и добавьте jdk или начните с контейнера, содержащего jdk, и добавьте nginx?

Или есть возможность объединить 2 изображения (и это будет хорошей идеей).

Оценка приветствуется.

1 Ответ

1 голос
/ 24 мая 2019

Для создания комбинированного изображения вы можете воспользоваться любым из предложенных путей:

  • Создание объединенного 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 .

...