Db2 Community Edition for Dockerの情報
使用するイメージ
icr.io/db2_community/db2
参考サイト
ソース
本記事で利用するソースはGitHubにアップしています。
データ永続化について
compose.yaml
services:
db2:
image: icr.io/db2_community/db2:latest
container_name: db2
privileged: true
restart: always
ports:
- "50000:50000"
env_file:
- .env
volumes:
- ./db2data:/database
- ./sample/csv:/var/custom/data
- ./sample/sql:/var/custom/sql
投入したデータは、コンテナ内の/database
に保存されるので、./db2data:/database
というマウント設定でローカルに永続化できるようにしています。
また、/var/custom/data
には投入したいcsvデータを配置し、/var/custom/sql
にはSQLファイルを配置します。
環境変数
必須フィールドとオプション設定があります。
詳細は以下を参考にしてください。
.env
# 参考:https://uepon.hatenadiary.com/entry/2024/07/05/172413
# 必須フィールド
# ライセンスの受託
LICENSE=accept
# DB2インスタンス名
DB2INSTANCE=db2inst1
# DB2インスタンスユーザーのパスワード
DB2INST1_PASSWORD=password
# オプション
# デフォルトのデータベース名
DBNAME=USERDB
BLU=false
ENABLE_ORACLE_COMPATIBILITY=false
UPDATEAVAIL=NO
TO_CREATE_SAMPLEDB=false
REPODB=false
IS_OSXFS=false
PERSISTENT_HOME=true
HADR_ENABLED=false
ETCD_ENDPOINT=
ETCD_USERNAME=
ETCD_PASSWORD=
投入するデータ
サンプルデータとして以下を利用します。
insert.csv
test,test,test@test.com,testtest,2025-01-02-11.00.00.000000,2025-01-02-11.00.00.000000
sample,sample,sample@sample.com,samplesample,2025-01-11-11.00.00.000000,2025-01-11-11.00.00.000000
users
テーブルを作成するために、SQLファイルを用意します。
create_users.sql
CREATE TABLE users (
id VARCHAR(36) NOT NULL,
name VARCHAR(40) NOT NULL,
mail VARCHAR(100) NOT NULL,
password VARCHAR(30) NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
PRIMARY KEY (
id
)
);
DB2コンテナの構築
git clone https://github.com/v1tam1nb2/db2-container.git
cd db2-container
docker compose up -d
データの投入
# コンテナ内に入る
docker exec -it db2 bash
# パスを通す
export PATH=/database/config/db2inst1/sqllib/bin/:$PATH
# データベースに接続
db2 connect to USERDB user db2inst1 using password
# テーブル作成
db2 -tvf /var/custom/sql/create_users.sql
# データのインサート
db2 import from /var/custom/data/insert.csv of del insert into users
# Terminate
db2 terminate
# コンテナから出る
exit
サンプルデータの確認
# db2ins1ユーザーでコンテナに入る
docker exec -it db2 bash -c "su - db2inst1"
# データベースに接続
db2 connect to userdb
# selectの実行
db2 "select * from users"
# Terminate
db2 terminate
# コンテナから出る
exit
セレクト結果
[db2inst1@9b483c1926bf ~]$ db2 "select * from users"
ID NAME MAIL PASSWORD CREATED_AT UPDATED_AT
------------------------------------ ---------------------------------------- ---------------------------------------------------------------------------------------------------- ------------------------------ -------------------------- --------------------------
test test test@test.com testtest 2025-01-02-11.00.00.000000 2025-01-02-11.00.00.000000
sample sample sample@sample.com samplesample 2025-01-11-11.00.00.000000 2025-01-11-11.00.00.000000
2 record(s) selected.
[db2inst1@9b483c1926bf ~]$
最後に
ローカルにDB2コンテナを作成し、サンプルデータを投入するところまでできました。
これでローカル環境でDB2の学習などができるようになりました。