- 03-5820-1777平日10:00〜18:00
- お問い合わせ
こんにちは。
ソフトウェアのアーキテクチャは様々ありますが、個別に開発された小さなサービスを組み合わせて一つのサービスを提供する、といったサービス連携アーキテクチャであるマイクロサービスについて、具体的な構築例を示します。
これからマイクロサービスを導入・検討される方の参考になればと思います。
今回はDocker ComposeをWindowsにインストールしDockerコンテナ上でPosgresqlとDB管理ツールのAdminerを入れて正常に動作するか試してみたいと思います。
Windowsは次のバージョンを使用する事を前提です。
Windows 10 Pro、Enterprise、Education
DockerHub からダウンロード
Windowsのコントロールパネルのプログラムと機能のWindowsの機能の有効化または無効化でLinux用Windowsサブシステムと仮想マシンプラットフォームをチェック
LinuxをWindowsで使用できるようにする為にwsl2をインストール
PowerShell上で 「wsl --install」 コマンドを実行します。
マシン再起動後、「wsl --install -d Ubuntu」 コマンドを実行します。 (UbuntuはLinuxのディストリビューションです)
次にカーネル更新のパッケージをインストールします。
「wsl --update」を実行
次にwslの規定バージョンを2にする為の設定をします。
「wsl --set-version Ubuntu 2」コマンド実行
この状態でインストールしたDocker Desktopを起動します。
上の画面が出れば正常にインストールされています。
適当な位置にディレクトリを作成します。このページのサンプルでは「docker-sample」ディレクトリとしておきます。
docker-compose.yml作成
docker-sampleディレクトリの下に「docker-compose.yml」ファイルを作成し以下の内容を記述します。
version: '3.8'
volumes:
pgdata:
networks:
default:
services:
db:
image: postgres
container_name: db
ports:
- 5432:5432
environment:
- POSTGRES_DB=${DB_NAME:-db}
- POSTGRES_USER=${postgres}
- POSTGRES_PASSWORD=${DB_PASSWORD:-postgres}
volumes:
- pgdata:/var/lib/postgresql/data
- ./db/init:/docker-entrypoint-initdb.d
adminer:
image: michalhosna/adminer
container_name: adminer
ports:
- 8080:8080
restart: always
depends_on:
- db
environment:
# specify service name of PostgreSQL to ADMINER_SERVER
- ADMINER_SERVER=db
- ADMINER_DRIVER=pgsql
- ADMINER_DB=${DB_NAME:-db}
- ADMINER_USERNAME=${DB_USER:-postgres}
- ADMINER_PASSWORD=${DB_PASSWORD:-postgres}
- ADMINER_NAME=ADMINER for PostgreSQL DB
DB初期化ファイル作成
docker-sample\db\initフォルダを作成し、以下に次の初期化用ファイルを作成します。
・01_create_table.sql
・02_insert_data.sql
以下それぞれのファイルの内容です。
CREATE TABLE account (
id bigserial,
username VARCHAR(30)
);
INSERT INTO account (username) VALUES ('sato');
INSERT INTO account (username) VALUES ('oohashi');
INSERT INTO account (username) VALUES ('sasaki');
コンテナ作成・起動
準備ができたらコンテナを作成・起動していきます。
PowerShell上で該当ディレクトリから、「docker-compose up -d」 コマンドを実行します。
正常に起動された場合Docker Desktopは以下のようにadminerとdbのコンテナが作成されています。
http://localhost:8080 にアクセスするとadminerのログイン画面が表示されます。
ログインしてデータを表示させると
以上のようにデータが入っているのが確認できます。
コンテナの停止
「docker-compose stop」コマンドで全てのコンテナを停止します。
「docker-compose stop [コンテナ名] 」コマンドでコンテナを指定する事も可能です。
コンテナの破棄
「docker-compose down」コマンドでコンテナを破棄します。
データの破棄
コンテナを破棄した段階ではまだ、DBデータなどvolumeに関連づけたものはdocker上で保管してあります。
それも破棄したい場合は以下のコマンドを実行します。(Volumeに関しては他の回のコラムで書きたいと思います)
「docker-compose down -v」
以上、Docker Composeの使用方法を簡単にまとめてみました。