🌟

OracleDB Dockerイメージをビルドしてみる

2023/10/24に公開

記事の内容

OracleDBで開発することがあったため、ローカルPCでOracleを触れる開発を作りたいと思いました。
加えて直インストールでなくDockerで作りたかったのですが、公式からはほしいバージョンのイメージが配布されておらず、ツールを使用して自前でビルドする必要がありました。
その方法を記載したいと思います。

https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance

注意点

2023年10月現在、バージョン23cであれば公式から配布されていますので自前でビルドは不要です。
特にバージョンのこだわりがない場合はこちらを使用しましょう。

関係する技術・ツール

  • Docker Desktop

作業の流れ

  1. ビルドツールを公式からクローン
  2. 作成するバージョンのバイナリをダウンロードして配置
  3. ビルドツールのスクリプトを実行
  4. docker runで起動確認

1. ビルドツールを公式からクローン

下記のリポジトリをクローンします。お好みの方法で取得してください。
https://github.com/oracle/docker-images

SSHの場合は下記のようになります。

git clone git@github.com:oracle/docker-images.git

2. 作成するバージョンのバイナリをダウンロードして配置

作成するバージョンのバイナリをOracleの公式サイトから取得します。
取得にはOracleアカウント(無料)への登録が必要です。
こちらから作成します。

アカウントを作成したらこちらから作成するバージョンのバイナリを選択します。2023年10月現在では、バージョン19cと21cがあるようです。拡張子がzipのものを選びます。
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_free

ここで下記注意点があります。

私の環境はMacで、かつ今回は19cを作成したいのでOracle Database 19c for LINUX ARM(下記の上欄)を選択しました。

ダウンロードしたら、手順1でクローンしたフォルダにバイナリを配置します。
dockerfilesというフォルダがあるのでここに配置します。
バージョンに応じて、例えば19cなら19.3.0、21cなら21.3.0のフォルダです。つまりフォルダ名の一番左側の数字と一致したフォルダに配置します。フォルダ名を変更したり新たにフォルダを作る必要はありません。

3. ビルドツールのスクリプトを実行

配置が完了したら、ツールに含まれているスクリプトを実行します。
あらかじめdocker desktopを起動しておきましょう。

こちらにあります。

試しに実行すると、下記のように作成するバージョンやエディションを引数で渡す必要があります。

$ ./buildContainerImage.sh                 

Usage: buildContainerImage.sh -v [version] -t [image_name:tag] [-e | -s | -x | -f] [-i] [-p] [-b] [-o] [container build option]
Builds a container image for Oracle Database.

Parameters:
   -v: version to build
       Choose one of: 11.2.0.2  12.1.0.2  12.2.0.1  18.3.0  18.4.0  19.3.0  21.3.0  23.3.0  
   -t: image_name:tag for the generated docker image
   -e: creates image based on 'Enterprise Edition'
   -s: creates image based on 'Standard Edition 2'
   -x: creates image based on 'Express Edition'
   -f: creates images based on Database 'Free' 
   -i: ignores the MD5 checksums
   -p: creates and extends image using the patching extension
   -b: build base stage only (Used by extensions)
   -o: passes on container build option

* select one edition only: -e, -s, -x, or -f

LICENSE UPL 1.0

Copyright (c) 2014,2023 Oracle and/or its affiliates.

今回は19cのエンタープライズ版を作成するので下記のように引数を渡します。

./buildContainerImage.sh -v 19.3.0 -e

ビルドが開始するので終わるまで待ちましょう。

4. docker runで起動確認

ビルドしたイメージでコンテナを起動してみます。
AppleシリコンMacかつ19cをビルドした場合は、oracle/database:19.3.0-eeとして作成されていると思います。

docker run -e ORACLE_PDB=oracle -e ORACLE_PWD=Password1234 -p 1521:1521 oracle/database:19.3.0-ee 

コンテナ環境変数の詳細はこちらに記載があります。

データベースの初期化に少し時間が掛かります。完了するまで待ちましょう。
下記のようにDATABASE IS READY TO USE!と表示されたら初期化完了です。

SQL> SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
The Oracle base remains unchanged with value /opt/oracle
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################

DBへの接続は下記のように接続できると思います。

sqlplus pdbadmin/Password1234@localhost:1521/oracle
sqlplus pdbadmin/Password1234@localhost:1521/oracle

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 24 01:18:54 2023
Version 19.19.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Last Successful login time: Tue Oct 24 2023 01:17:31 +00:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

よくよく確認してみると、19.19.0が作成されます。
19.3.0を引数で指定しましたが、AppleシリコンMacでは提供されているバイナリ自体が19.19.0のためのようです。
しかしdocker tagも19.3.0で作成されてしまいます。タグが19.3なのに実態は19.19なのは紛らわしいのでタグを変更しておきましょう。

docker tag oracle/database:19.3.0-ee oracle/database:19.19.0-ee 

以上になります。
これで無事、OracleDBのDockerイメージがビルドできました。

NCDCエンジニアブログ

Discussion