DB2を使うプロジェクトで開発時はh2をDB2モードにしてやっていたりするのだが、どうしても対応していないSQLがでてきたりする。
ローカルマシンに入れるのも嫌だし、専用PC用意するのも嫌なのでDockerでやってみた。
準備
MacでDockerはじめましたを参考に準備する。
DB2 Express-Cインストール済のイメージを取得する
イチからインストールするのも面倒なのでこれを使わせていただく。
docker pull angoca/db2-instance
起動する
docker run -i -t --privileged=true --name="db2inst1" -p 50000:50000 angoca/db2-instance
sshでrootユーザーでログインした状態になる。
インスタンスを作成する
sshでログインすると/tmp/db2_confにいる状態になっているはず。そのディレクトリにcreateInstanceというファイルがあるので実行する。
./createInstance
db2inst1というインスタンスが作成され、db2inst1ユーザーになる。
DB2コマンドを確認してみる。
db2 list db directory
以下のような結果になればOK
SQL1031N The database directory cannot be found on the indicated file system.
SQLSTATE=58031
日本語を使えるように設定する
このイメージはデフォルトでは日本語が使えないので設定する。この作業はrootユーザーで行う。
まずは現在の設定を試してみる。
echo $LANG
なにもでないはず。
以下を実行する。
sudo locale-gen ja_JP.UTF-8
sudo /usr/sbin/update-locale LANG=ja_JP.UTF-8
source /etc/default/locale
設定がうまくいったかどうか試す。
echo $LANG
以下のような結果になればOK
ja_JP.UTF-8
ホストマシンからアクセスしてみる
IPを確認
boot2docker ip
[ip:50000]でアクセスできる。
あとはcreate databaseしたりすればOK。
Tips
SSHから抜ける
ctrl + P + Qで抜ける。exitで抜けるとdockerコンテナが終了してしまう。
コンテナを起動
docker start db2inst1
SSHで入る
docker attach db2inst1
TODO
一連の流れをDockerfileにしたい。