Развертывание базы данных Oracle в Docker в условиях санкций

Предыстория

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

Процесс по умолчанию

По умолчанию создание базы Oracle в контейнере Docker не требует большого количества шагов:

  1. Склонировать репозиторий

  2. Скачать с оффициального сайта бинарные файлы

  3. Переместить скачанные бинарные файлы в определенное место в репозитроии

  4. Запустить процесс сборки образа через специальную утилиту

Процесс описан в документации репозитроия

Реальный опыт

При попытке выполнения шагов возникают проблемы уже начиная со 2 этапа.

Первая проблема — это не доступность оффициальных сайтов Oracle в РФ. Решается она использованием любого VPN расширения для браузера. И так получили репозитрий и технический доступ для скачиванию бинарных файлов, но для их получения потребуется аккаунт Oracle. Для решения проблемы с аккаунтом пользуемся VPN + любой сервис временной почты. В процессе создания потребуется вводить данные о компании, географическом положении и т.п. Фактически введенные данные не проверяются, так что писать можно практически что угодно.

Ошибка при попытке скачинвания без VPN

Ошибка при попытке скачинвания без VPN

Далее запускаем процесс сборки образа (в нашем случае команда выглядит следующим образом)

bash buildContainerImage.sh -i -x -v 21.3.0

Иии… Получаем ошибку о не достаточном месте на диске (Сборка производилась на виртуальной машине Ubuntu 20.04 с 50ГБ места на диске)
Ошибка говорит нам о том, что для созданного образа понадобиться целых 21ГБ свободного места!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
checkSpace.sh: ERROR - There is not enough space available in the docker container.
checkSpace.sh: The container needs at least 21 GB , but only 15 available.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Эта проблема уже не относится к теме санкций и быстро решилась расширением виртуального диска, но для полноты рассказа было принято решение ее здесь осветить, так как по итогу полученный образ занимет ~ 6.5ГБ

После решения проблемы со свободным местом и получением всех необходимых файлов можно вновь запускать сборку, но в этот раз возникает новая ошибка. В процессе сборки требуется доступ к одному из ресурсов Oracle, а так как расширение с VPN работает только на браузер придется прибегать к более серьезным мерам и использовать отдельную VPN сеть.

В нашем случае воспользовались wireguard и личным сервером знакомого. Для настройки использовалась статься, а требуемый конфиурационный файл можно скачать на самом cервере

35ee83b04a6fe4db7f3d70e7bf8eddd1.png

Наконец, после решения всех проблем образ собрался.

Немного о запуске контейнера

Так же хочется упомянуть процесс запуска контейнера, так как присутствуют нюансы.

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

  2. После запуска появляется доступ к системе управления/мониторинга базы на https://localhost:5500/em/, где нас встречат экран входа в систему, для успешной авторизации требуется вводить данные:

    • Username: SYSTEM Один из пользователй по умолчанию для всех баз Oracle

    • Password: тот что указан в переменной окружения ORACLE_PWD при запуске контейнера

    • Container Name: CDB$ROOT Та же история, что и с ORACLE_SID (необоснованно жестко заданные значения aka hardcode)

© Habrahabr.ru