В одном из моих предыдущих постов я показал, как запустить приложение 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, являются их собственными. |