無償版のOracleをDockerで構築する
無償版(Express Edition)のOracleをDockerで構築する作業メモです。
MySQLやPostgreSQLなどは公式が提供しているコンテナイメージなどをそのまま使用すれば簡単に構築できますが、Oracleの場合は自分でコンテナイメージを作成する必要があります。
Oracle Databaseのダウンロード
以下のページのOracle Database 21c Express Edition for Linux x64 ( OL8 )リンクからOracle Database 21c Express Editionをダウンロードします。
https://www.oracle.com/jp/database/technologies/xe-downloads.html
Dockerコンテナで使用するため、Linux版を使用します。
OracleのDockerイメージのダウンロード
以下のリポジトリを取得します。
https://github.com/oracle/docker-images
$ git clone https://github.com/oracle/docker-images.gitイメージの作成
ダウンロードしたDockerイメージの以下のパスに、先程ダウンロードしたOracle Databaseのファイルを配置します。
ファイル名は「oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm」などの名前だと思いますが、解凍などは必要なく、そのままコピーします。
21.3.0のフォルダはOracle Databaseのバージョンに対応しているようなので、21c以外を使用する場合はフォルダも変更してください。
/docker-images/OracleDatabase/SingleInstance/dockerfiles/21.3.0
以下のコマンドでイメージを作成します。
$ cd docker-images\OracleDatabase\SingleInstance\dockerfiles\
$ .\buildContainerImage.sh -v 21.3.0 -x -iスクリプトのオプションは公式ドキュメントで確認できます。
-xオプションで無償版(Express Edition)のOracle Databaseを作成します。
イメージが作成されたことを確認します。
$ docker image
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 21.3.0-xe 66993ce9ccd5 6 days ago 6.53GBコンテナの起動
docker-compose.ymlの設定に以下を追記します。
docker-compose.ymlversion: "3.2"
services:
db:
image: oracle/database:21.3.0-xe
ports:
- 1521:1521
volumes:
- oradata:/opt/oracle/oradata
environment:
- ORACLE_PWD=oracle
volumes:
oradata:docker-compose upでコンテナを起動し、DATABASE IS READY TO USE!のログが表示されればOracleは正常に起動しています。
初回は起動に時間がかかります。(5分位かかったと思います)
Oracleのデータを永続化するためにvolumesを設定しますが、永続化のファイルを格納するフォルダを以下のようにプロジェクト内のフォルダを指定する場合、権限のエラーが発生することがあるので、注意が必要です。
docker-compose.yml(エラーになる)volumes:
- oradata:/opt/oracle/oradata
- ./test:/opt/oracle/oradataCannot create directory "/opt/oracle/oradata/XE".
接続確認
CloudBeaverで接続確認を行います。
設定手順や接続情報はDocker ComposeでCloudBeaverを導入するとDocker環境に構築したOracleをCloudBeaverで接続するで紹介しています。