12cを構築する方法はいくつか見つけたのですが、11gを構築する方法はあまり無かったのでメモ。 基本的にはOracleの公式とQiitaの記事を参考にしています。
環境
- ホストOS: CoreOS(1576.5.0)
- docker: 17.09.0-ce
- docker-compose: 1.16.1
手順
- ここから
oracle-xe-11.2.0-1.0.x86_64.rpm.zip
をダウンロード dockerfiles/11.2.0.2/
にoracle-xe-11.2.0-1.0.x86_64.rpm.zip
を置く以下のコマンドでイメージを作成
$ ./buildDockerImage.sh -v 11.2.0.2 -x -i ... Successfully tagged oracle/database:11.2.0.2-xe Oracle Database Docker Image for 'xe' version 11.2.0.2 is ready to be extended: --> oracle/database:11.2.0.2-xe Build completed in 160 seconds.
ビルドが成功すると、以下のようにOracle DBのイメージが作成されている
$ docker images oracle/database 11.2.0.2-xe xxxxxxxxxxxx 24 hours ago 1.13GB
データ永続化用のディレクトリを作成
$ mkdir data $ sudo chown 1000:1000 data
docker-compose.yml
を準備 gist.github.com- 以下のコマンドで実行
$ docker-compose up -d
注意点
永続化用のディレクトリのパーミッション
公式のドキュメントに
Has to be writable by the Unix "oracle" (uid: 54321) user inside the container!
とあったので、はじめはuidを54321としていましたが書き込みができませんでした。
CoreOSの他の永続化用ディレクトリと同じようにuidを1000にする必要があります。
DB起動時のオプション
ORACLE_SID
、ORACLE_PDB
、ORACLE_CHARACTERSET
は11gでは設定できません
オプション自体は受け取るようですが、起動時に失敗します