Предыстория
По определенным обстоятельствам потребовалось создать имитацию всего контура тестируемого нами ПО, контур включает в себя множество различных сервисов, но в этой статье остановимся на базе данных, так как процесс ее развертывания наиболее нитереснен.
Процесс по умолчанию
По умолчанию создание базы Oracle в контейнере Docker не требует большого количества шагов:
Склонировать репозиторий
Скачать с оффициального сайта бинарные файлы
Переместить скачанные бинарные файлы в определенное место в репозитории
Запустить процесс сборки образа через специальную утилиту
Процесс описан в документации репозитория
Реальный опыт
При попытке выполнения шагов возникают проблемы уже начиная со 2 этапа.
Первая проблема - это блокировка оффициальных сайтов Oracle в РФ. Решается она использованием любого VPN расширения для браузера. И так получили репозиторий и технический доступ для скачивания бинарных файлов, но для их получения потребуется аккаунт Oracle. Для решения проблемы с аккаунтом пользуемся 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ервере
Наконец, после решения всех проблем образ собрался.
Немного о запуске контейнера
Так же хочется упомянуть процесс запуска контейнера, так как присутствуют нюансы.
Предлагаемая в репозитроии строка запуска не подходит для собраной нами версии. после проб и ошибок выяснилось, что переменная окружения
ORACLE_SID
должна быть опеределенной для каждой версии базы данных, в нашем случаееXE
После запуска появляется доступ к системе управления/мониторинга базы на
https://localhost:5500/em/
, где нас встречат экран входа в систему, для успешной авторизации требуется вводить данные:Username: SYSTEM Один из пользователй по умолчанию для всех баз Oracle
Password: тот что указан в переменной окружения
ORACLE_PWD
при запуске контейнераContainer Name: CDB$ROOT Та же история, что и с
ORACLE_SID
(необоснованно жестко заданные значения aka hardcode)