Статьи

Запуск Tomcat и Oracle DB в контейнере Docker

В одном из моих предыдущих постов я показал, как запустить приложение ADF Essentials на Tomcat в док-контейнере. Я использую этот подход в первую очередь для примеров приложений в качестве удобного способа поделиться проверкой концепции. В этом посте я собираюсь описать, как обогатить контейнер докера базой данных Oracle, чтобы мои примеры могли быть осведомлены о БД.

Исходный образ Tomcat, который я разрабатываю в этих статьях, основан на Debian Linux. Я действительно не хочу получать удовольствие от установки и настройки Oracle DB в Debian Linux, и, конечно, я не буду описывать это в этом посте. Я собираюсь использовать технику Docker-in-Docker. Итак, я собираюсь взять контейнер из предыдущего поста с предварительно настроенным ADF Tomcat, установить среду выполнения Docker в этом контейнере, извлечь образ БД Oracle и запустить его внутри контейнера. Существует множество дискуссий о методике Docker-in-Docker, в которой утверждается, достаточно ли она эффективна или нет. Я думаю, что я бы не пошел с этим подходом в производстве, но для примеров приложений я полностью согласен с ним.

Давайте начнем.

1. Запустите новый контейнер из изображения, сохраненного в предыдущем посте :

1
docker run --privileged -it -p 8888:8080 -p 1521:1521 -p 5500:5500 --name adftomcatdb efedorenko/adftomcat bash

Обратите внимание на опцию, привилегированную в команде docker. Эта опция необходима, чтобы контейнер мог запускать движок Docker внутри себя.

2. Установите двигатель Docker в контейнер:

1
2
3
curl -fsSL get.docker.com -o get-docker.sh
 
sh get-docker.sh

После успешной установки двигатель Docker должен запуститься автоматически. Это можно проверить с помощью простой команды docker:

1
docker ps

Если двигатель не запустился (как это произошло в моем случае), запустите его вручную:

1
service docker start

3. Войдите в Docker Hub:

1
docker login

И предоставьте свои учетные данные Docker Hub.

4. Потяните и запустите официальный образ БД Oracle :

docker run –detach = true –name ADFDB -p 1521: 1521 -p 5500: 5500 store / oracle / database-enterprise: 12.2.0.1

Готово!

Теперь у нас есть док-контейнер с предварительно сконфигурированным Tomcat для запуска приложений ADF и с Oracle DB, работающим в контейнере внутри контейнера. Мы можем подключиться к БД из обоих
Контейнер adftomcatdb и хост-компьютер как sys/[email protected]: 1521: ORCLDB как sysdba

Давайте сохраним нашу работу в образе докера, чтобы мы могли использовать ее позже.

5. Создайте сценарий запуска оболочки /user/local/tomcat/start.sh в контейнере со следующим содержимым:

1
2
3
4
5
6
7
8
9
#!/bin/bash
  
service docker start
  
docker start ADFDB
  
catalina.sh start
  
exec "$@"

6. Удалите папку времени выполнения Docker в контейнере:

1
rm -r /var/lib/docker/runtimes/

7. Остановите контейнер с хост-терминала:

1
 docker stop adftomcatdb

8. Создайте новый образ:

1
docker commit adftomcatdb efedorenko/adftomcatdb:1.0

9. Запустите новый контейнер из созданного изображения:

1
docker run --privileged -it -p 8888:8080 -p 1521:1521 -p 5500:5500 --name adftomcatdb_10 efedorenko/adftomcatdb:1.0 ./start.sh bash

10. Наслаждайтесь!

Это оно!

Опубликовано на Java Code Geeks с разрешения Евгения Федоренко, партнера нашей программы JCG . См. Оригинальную статью здесь: Запуск Tomcat и Oracle DB в контейнере Docker.

Мнения, высказанные участниками Java Code Geeks, являются их собственными.