oracle
docker
docker-compose
OracleDatabase

こんにちわ
グローバスセンス株式会社のskanehiraです。

最近コツコツとWebアプリ作っていたので、記事を各のは久々です。
ちなみに作ったWebアプリはこちらです。
いずれ、このアプリについて記事を書く予定です。

今回のテーマ

いろいろあって、Oracle Master Bronzeを取得することにしたので、
勉強のため、Oracle Database 12cを用意しました。

その時の備忘録になります。
同じことをやろうとしている方の助けになればと思います。

用意するもの

  • Docker
  • Docker Compose
  • Oracle docker-images(リポジトリ)
  • Oracle Database 12c(本体)

Oraccle公式でイメージは用意していないため、pullできないので、
イメージをビルドする必要があります。

といっても、公式でちゃんとビルド用のリポジトリが用意されているので大丈夫です。

ビルド環境

環境 バージョン
OS macOS High Sierra
Docker 18.03.1-ce
Docker Compose version 1.21.1, build 5a3f1a3

参考サイト

今回構築する際に参考情報です。
ありがとうございましたm(_ _)m

手順

1. 公式リポジトリをgit clone

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

いろいろありますが、使用するのはOracleDatabaseになります。

2. 公式からOracle Database本体をダウンロードする

Oracle Database 12c Release 2 Linux x86-64をダウンロードします。

少し時間がかかりますので,
その間はyoutubeでダブステップを聞きながらテンションアゲアゲします。

3. ダウンロードしたファイルを配置する

イメージをビルドするのに、本体ファイルをdockerfilesに配置します。

cd docker-images/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1
cp ~/Downloads/linuxx64_12201_database.zip .

4. ビルド

引数の詳細はREADMEを参照してください。

cd ..
/buildDockerImage.sh -v 12.2.0.1 -e -i

以下のメッセージが出たら成功です。
マシンスペックにもよりますが、Macbookのパワー不足で20分もかかった…

  Oracle Database Docker Image for 'ee' version 12.2.0.1 is ready to be extended:

    --> oracle/database:12.2.0.1-ee

  Build completed in 1221 seconds.

5. データ永続化用ディレクトリ

永続化するためのマウントディレクトリを作成しておきます。
権限周りの設定が必要なので、とりあえずフル権限つけておきます。

mkdir ./oradata
chmod 777 ./oradata

6. yamlファイルを作成

vi docker-compose.yaml

中身は以下になります。
使用できる環境変数はREADMEを参照してください。

version: '2'
services:
  db:
    image: oracle/database:12.2.0.1-ee
    container_name: oracle
    ports:
      - 1521:1521
      - 5500:5500
    volumes:
      - ./oradata:/opt/oracle/oradata
    environment:
      - ORACLE_PWD=Oracle12
      - ORACLE_PDB=oracle

7. コンテナ作成

ここまで来たら、あとはコンテナを作成するだけです。

docker-compose up -d

初回起動は少し時間がかかりますので、
起動できたかどうかをログで確認しましょう。

docker logs -f oracle

こんなのが出たらOKです。

#########################
DATABASE IS READY TO USE!
#########################

docker psの方はこんな感じになります。

[skanehira@MacBook oracle]$ docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                 PORTS                                            NAMES
98b74482fc12        oracle/database:12.2.0.1-ee   "/bin/sh -c 'exec $O…"   7 hours ago         Up 2 hours (healthy)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   oracle
[skanehira@MacBook oracle]$

8. 接続テスト

ローカルにsqplusがないので、コンテナ内で確認してみます。
docker psを見る限りポートマッピングは大丈夫そうなので、内部接続だけ確認します。

[skanehira@MacBook oracle]$ docker exec -it oracle bash
sqlplus SYSTEM/Oracle12@ORCLCDB[oracle@98b74482fc12 ~]$ sqlplus SYSTEM/Oracle12@ORCLCDB

SQL*Plus: Release 12.2.0.1.0 Production on Thu Jun 7 00:43:50 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Last Successful login time: Wed Jun 06 2018 17:48:20 +00:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>

バッチリ!

9. imageのexportしておく

何かあった時に、もう一度ビルドするのは面倒なので…
イメージをexportしておきます。

docker export --output="oracle12.2.0.1-ee" oracle

最後に

めでたくOracle Database入ったので、ダブステップを聞きながら勉強します。
しばらく記事は書きませんが、資格取ったら報告も含め記事にする予定です。

では〜