Docker + Oracle Database 19c環境を作りたい!

技術情報
技術情報

必要に駆られてDockerで環境作成したため、手順を公開します。
以前11g環境を構築したことがあり、同じような流れで作成しています。
Dockerインストール済みの方向けの手順となっています

Docker:imageの作成

① Oracleの公式GitHubリポジトリからDockerイメージをclone
 コマンドプロンプトから、以下コマンドを実行します。

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

② インストールイメージのダウンロード
 https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html
 LINUX.X64_193000_db_home.zip
 をダウンロードします。

③ インストールイメージの配置
 ※①でクローンしたdockerイメージの以下のパスに、②を格納します。
 docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/

④Docker imageのビルド
 コマンドプロンプトから、以下のコマンドを実行します。

cd docker-images/OracleDatabase/SingleInstance/dockerfiles
./buildContainerImage.sh -v 19.3.0 -e

※バージョンのエラーで出来ない場合は、以下コマンド。

cd docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
docker build -t oracle/database:19.3.0-xe .

Docker:containerの作成

① docker-compose.yml 作成
  今回は、以下の内容で作成しました。
  ※services:の下の「19c」はコンテナ名

version: '3.7'
services:
  19c:
    image: oracle/database:19.3.0-ee
    shm_size: 1gb
    ports:
      - 1521:1521
    volumes:
      - oracle-data:/opt/oracle/oradata
    environment:    
      - ORACLE_SID=XXXX
      - ORACLE_PWD=XXXX_PASS

volumes:
      oracle-data:

 コマンドプロンプトから、docker-compose.yml のある階層で以下コマンドを実行します。

docker compose up -d

 手順としてはこれで完了です。

補足:volumesについて

11g環境を構築した際の手順を元に作成しましたが、以前は
一番下の「volumes」は記載していませんでした。

11g構築時のdocker-compose.yml 👇

version: '3.7'
services:
  11g:
    image: oracle/database:11.2.0.2-xe
    shm_size: 1gb
    ports:
      - 1521:1521
    volumes:
      - ./oracle:/u01/app/oracle/oradata
    environment:    
      - ORACLE_SID=XXXX
      - ORACLE_PWD=XXXX_PASS

(ここにvolumesの記載なし)

元々この記載は、「データ永続化のためにOracleのデータをDockerの外にリンクさせている」
ようなイメージですが
この方法では権限のエラーで起動しなかったり、エラーになることが多かったため
今回の19cでは、Docker内部にvolumesを作成する方法で対応しています。

まとめ

バージョンが異なるだけですが、インストールイメージがどこにあるのか
どれなのかというのが最近のOracleのサイトからは読み取りにくく
11gの構築でもその点で苦戦しました。
今回こうして作成したものの、元々の環境と文字コードが異なるため
実際は使用出来ず、別でまた用意することになりましたが、
何か別の機会で使用出来ると良いなと思います。

タイトルとURLをコピーしました