Предыстория

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

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

По умолчанию создание базы 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ервере

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

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

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

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

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

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

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

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

Комментарии (8)


  1. oragraf
    09.11.2023 14:03
    +2

    Безотносительно содержания статьи - проверять на наличие ошибок было бы неплохо. "иммитация", "не доступность" - то, что бросилось сразу в глаза.


  1. sergarcada
    09.11.2023 14:03
    +2

    Смысл статьи можно свести к двум советам - пользуйтесь VPN и проверкой орфографии.


  1. Johan_Palych
    09.11.2023 14:03

    Развертывание базы данных Oracle в Docker в условиях санкций
    При попытке выполнения шагов возникают проблемы уже начиная со 2 этапа.

    Реальный опыт без VPN и остальной ....и в РФ минут за 40.
    Была чистая виртуалка с Debian 12 Bookworm - netinstall c openssh-server
    Поставил podman из репы:
    https://software.opensuse.org/download.html?project=devel%3Akubic%3Alibcontainers%3Astable&package=podman
    podman machine set --memory 4096(для нормального теста)

    podman pull container-registry.oracle.com/database/free:latest

    Про podman volume create --label и остальные донастройки писать не буду. Лень. Целая статья получится.

    mkdir ~/.local/bin && cd ~/.local/bin
    Нормально пускает:
    https://www.oracle.com/database/sqldeveloper/technologies/sqlcl/download/
    wget https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip && unzip sqlcl-latest.zip
    cd ~/.local/bin/sqlcl/bin
    Подключаемся к 23c Database


    1. sergarcada
      09.11.2023 14:03

      Попробовал на убунту 20.04 (WSL) - и действительно работает. А в Oracle об этом знают? ????


      1. Johan_Palych
        09.11.2023 14:03

        Oracle и не блокировал доступ через web. На стационарных пчеле и квадрате без яйца все открывается.
        https://container-registry.oracle.com/
        Database Repositories
        Short URL : https://container-registry.oracle.com/ords/ocr/ba/database


  1. UrsusOne
    09.11.2023 14:03

    Контейнерная база данных в контейнере. Это великолепно!

    Но зачем? Просто академический интерес?

    Управлять таким каддавром крайне не удобно.


    1. MiIs
      09.11.2023 14:03
      +1

      Не буду гадать за автора статьи и Johan_Palych зачем им Oracle 23C. Потому что совершенно ясно, что Oracle DB в России в дальнейшем не будет, по крайнй мере в государственном и банковском секторах (да и в других тоже). Причин две: 1. Прекращение поддержки российских пользователей фирмой Otacle после февраля 2022 года. 2. Странная и сильно жадная политика ценообразования Oracle на свои продукты ранее и сильно большой гонор и мвлый выхлоп от так называемой "поддердки". То есть переход с Oracle DB на что-то другой начался задолго до 2022 года. В 2022 году этот переход просто стал бесповоротным.

      Последняя промышленная версия Oracle 19C. После этого переход на другие DB. Поэтому необходимость в Oracle 23C действительно либо академическая, либо работа на иностранного заказчика через несколько фирм-прослоек. И, возможно, если кто не в курсе, то еще с марта 2023 года для Virtual Box есть виртуалка с "разработческой" версией Oracle DB 23c - https://www.oracle.com/database/technologies/databaseappdev-vm.html, которую можно скачать абсолютно спокойно, в том числе и из России.


  1. easyman
    09.11.2023 14:03

    А какие минусы у https://container-registry.oracle.com/