0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Db2 Community Edition for DockerでローカルDB2を構築する

Posted at

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の学習などができるようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?