無償版の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.yml
version: "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/oradata
Cannot create directory "/opt/oracle/oradata/XE".
接続確認
CloudBeaver
で接続確認を行います。
設定手順や接続情報はDocker ComposeでCloudBeaverを導入するとDocker環境に構築したOracleをCloudBeaverで接続するで紹介しています。