この記事の目的
テスト環境を作るために、localにOracleDataBase19を用意しなければならないことになって必死に調べたので、忘備録も兼ねて。不備などありましたらご指摘お願いします。
環境
Mac OS Mojave(10.14.6)
Docker 19.03.4
Oracle docker-images
Oracle Database 19.3
流れ(記事内リンクあり)
Dockerをインストール
↓
Oracle公式のdocker-imagesリポジトリを適当なディレクトリに設置
↓
[Oracle Databaseのzipをダウンロード](#Oracle Databaseのzipをダウンロード)
↓
zipをdocker-imagesリポジトリ内適所に設置
↓
docker-imageをビルド
↓
docker-compose.ymlを作成
↓
コンテナを作成
↓
DB周りの設定
Dockerをインストール
公式からインストール。dockerについて詳しくはこちらの方が詳しく説明してくださっています。
Oracle公式のdocker-imagesリポジトリを適当なディレクトリに設置
Oracle公式のdocker-imagesリポジトリをクローンします。
$ git clone https://github.com/oracle/docker-images.git
このリポジトリに各バージョン(11gとか12cとか)用のdocker imageが入っているので、これを使ってローカルにdocker imageを作成していくことになります。
Oracle Databaseのzipをダウンロード
Oracle Databaseのソフトウェアダウンロードページから、Linux x86-64版をzip形式でダウンロードします。
このとき、Oraleプロファイルへの登録を求められるので、未登録の場合は登録します。
safariで自動解凍されてしまう場合は、safari->環境設定->一般において、「ダウンロード後"安全"なファイルを開く」という項目からチェックを外しておく必要があります。
zipをdocker-imagesリポジトリ内適所に設置
以前は docker-images/OracleDatabase/dockerfiles以下にバージョン名ディレクトリがあり、そこに設置していたようですが、記事作成現在はdocker-images/OracleDatabase/SingleInstance/dockerfiles以下のバージョン名ディレクトリ直下に設置するようになっています。
Downloadsディレクトリにダウンロードした場合は以下のようになります。(現時点での最新バージョンです)
$ cp /Users/[ユーザ名]/Downloads/LINUX.X64_193000_db_home.zip /[docker-imageを設置した場所]/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0
docker-imageをビルド
$ cd [docker-imageを設置した場所]/docker-images/OracleDatabase/SingleInstance/dockerfiles
$ ./buildDockerImage.sh -v 19.3.0 -e -i
ビルドのオプションは-hで確認できます。今回使用したオプションは、-vはバージョン指定、-eはEnterprise Editionであることの指定、-iはMD5チェックサムを無視することの指定です。
ビルドに時間がかかるのでしばらく待ちます。
以下のコマンドで作成されたイメージを確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 19.3.0-ee 795668b74d8e 33 minutes ago 6.65GB
oraclelinux 7-slim 874477adb545 2 months ago 118MB
oracle/databaseというのがこのイメージの名称ですね。
docker-compose.ymlを作成
dockerコンテナを作成したい場所(アプリケーションのdockerディレクトリなど)にdocker-compose.yml(コンテナの設計書のようなもの)を作成します。
$ vi docker-compose.yml
docker-compose.ymlの書き方はこちらの方などが書いてくださっています。
version: '2'
services:
db:
image: oracle/database:19.3.0-ee
ports:
- 1521:1521
- 5500:5500
volumes:
- ./data:/opt/oracle/data
environment:
- ORACLE_PWD=password
- ORACLE_PDB=pdb1
volumesに記載したdataディレクトリですが、こちらはデータマウント用に用意しておきます。こうすることで、コンテナを再度作成してもデータが消えません。また、こちらのマウントディレクトリ内から環境変数などを触ることもできる点も便利です。
コンテナを作成
コンテナ立ち上げのコマンドはこちらの方などが書いてくださっています。
一応ですが、docker-composeコマンドが効くのはdocker-compose.ymlの直上のディレクトリです。
$ docker-compose up
私は個人的に、itermの画面分割で、左でupして右でexecするのが気に入っていますが、ひとまず今回は立ち上げるところまでにしておきます。
おわりに
この後、Oracle DataBaseのインスタンスの概念やら、SpringBootのJDBCTemplateを使った接続やらでたくさん躓いたので、近いうちに別記事で書こうと思います。
参考にさせていただいた記事など
https://qiita.com/comefigo/items/d05c0e1977cc25e6b98a
https://itedge.stars.ne.jp/docker_image_oracle_database_19c/
https://qiita.com/gorilla0513/items/f22e8cce4e08da031abe