こんにちはサイオステクノロジー角川です。
Oracleデータベース用のDockerコンテナビルドツールが公開されており、このビルドツールを利用ことで手軽にOracleデータベースのコンテナを作成して試用することが出来ます。
今回はそのビルドツールを用いてOracle Database Express Edition(Oracle Database XE)という無償で利用出来るOracleデータベースエディションのコンテナを作成し、ローカル環境で試用環境を作成する手順についてご紹介します。
環境情報
- データベース
- Oracle Database 21c Express Edition
- データベースクライアント
- oracle-instantclient-basic-21.6.0.0.0
- oracle-instantclient-sqlplus-21.6.0.0.0
※本記事中の各ソフトウェアのバージョンは記事執筆時のものです。
手順
Oracle Database Express EditionのDockerイメージの作成
以下のGitコマンドでビルドツールをダウンロード(clone)してください。
$ git clone https://github.com/oracle/docker-images.git
ダウンロード後、以下のディレクトリへ移動してください。
$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles
移動後、ls
コマンドなどで確認すると以下のようなディレクトリがあることが分かります。
11.2.0.2 12.1.0.2 12.2.0.1 18.3.0 18.4.0 19.3.0 21.3.0
コンテナビルドの実行
以下のコマンドでビルドを実行してコンテナイメージを作成します。
今回はバージョン21c
を試すため、-v
オプションで21.3.0
を指定します。また、-x
オプションを指定することでExpress Editionのビルドをおこなうよう指定しています。
$ ./buildContainerImage.sh -v 21.3.0 -x
イメージの確認
ビルド後のイメージを確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE oracle/database 21.3.0-xe 001952aeb8ab 1 minutes ago 6.53GB
oracle/database
というイメージ名で21.3.0-xe
というタグが付いたイメージが作成されていることが確認出来ます。
動作確認
docker-composeでデータベースコンテナとデータベース接続確認用コンテナの2つを起動して動作の確認をおこないます。
データベース接続確認用コンテナ
作業用ディレクトリに以下のDockerfileを作成し、データベース接続確認用コンテナとして起動出来るようにしておきます。
FROM oraclelinux:7 WORKDIR /usr/local/src/ RUN yum -y install libaio && \ curl -O https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-basic-21.6.0.0.0-1.x86_64.rpm && \ curl -O https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-sqlplus-21.6.0.0.0-1.x86_64.rpm && \ rpm -ivh oracle-instantclient-* CMD ["sleep", "infinity"]
こちらからデータベースのクライアントソフトウェアであるoracle-instantclient-basic
とoracle-instantclient-sqlplus
をダウンロードしてインストールするようにしてあります。
※お試しの際はバージョンやダウンロード先のURLは最新のものに置き換えてご利用ください。
docker-compose.yamlの作成
同じく作業用ディレクトリに以下のdocker-compose.yaml
ファイルを作成して、
データベースコンテナとデータベース接続確認用コンテナの2つが起動出来るようにします。
version: '3.8' services: client: build: . depends_on: - database database: image: oracle/database:21.3.0-xe environment: - ORACLE_PWD=oracle ports: - "1521:1521" - "5500:5500"
ORACLE_PWD
という環境変数でデータベース接続用のパスワードを設定しています。
こちらは適宜変更をおこなってください。
コンテナの起動
以下コマンドで起動します。
$ docker-compose up -d
データベースコンテナの起動完了まで時間がかかりますのでご注意ください。
データベースへ接続
以下コマンドでclient
という名前のデータベース接続確認用コンテナに入ります。
$ docker-compose exec client bash
以下コマンドでデータベースへ接続をおこないます。
# sqlplus system/oracle@database:1521
上記sqlplusのコマンドの意味は以下のようになります。
# sqlplus `ユーザ名`/`パスワード`@`ホスト名:`ポート番号`
以下のような表示になれば正常にデータベースに接続ができています。
# sqlplus system/oracle@database:1521 SQL*Plus: Release 21.0.0.0.0 - Production on Mon Jun 27 01:24:29 2022 Version 21.6.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Last Successful login time: Mon Jun 27 2022 01:24:10 +00:00 Connected to: Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production Version 21.3.0.0.0 SQL>
SQL>
プロンプトが表示され、データベースに接続出来ていることが確認できます。
最後に
いかがだったでしょうか。コンテナのビルドをおこなうなど準備は必要ですが、コンテナを利用することでOracle Database Express Editionを試用する環境が作成出来たと思います。
参考になれば幸いです。