コラム

Docker ComposeをWindowsで使用する

こんにちは。
ソフトウェアのアーキテクチャは様々ありますが、個別に開発された小さなサービスを組み合わせて一つのサービスを提供する、といったサービス指向アーキテクチャであるマイクロサービスについて、具体的な構築例を示します。
マイクロサービスを導入される方の参考になればと思います。

今回はDocker ComposeをWindowsにインストールしDockerコンテナ上でPosgresqlとDB管理ツールのAdminerを入れて正常に動作するか試してみたいと思います。

Windowsは次のバージョンを使用する事を前提
Windows 10 Pro、Enterprise、Education

Docker Hub からDocker Desktopダウンロード

DockerHub からダウンロード

インストール

Windowsのコントロールパネルのプログラムと機能のWindowsの機能の有効化または無効化でLinux用Windowsサブシステムと仮想マシンプラットフォームをチェック

LinuxをWindowsで使用できるようにする為にwsl2をインストール

PowerShell上で 「wsl –install」 コマンド実行

マシン再起動後、「wsl –install -d Ubuntu」 コマンド実行 (UbuntuはLinuxのディストリビューションです)

この状態でインストールしたDocker Desktopを起動する。エラーが出なければインストール完了、エラーで出る場合は、「wsl –update」コマンドを実行後、DockerDesktop起動。

上の画面が出れば正常にインストールされています。

Posgresql、Adminerのコンテナ作成

適当な位置にディレクトリを作成します。このページのサンプルでは「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 user (
    id bigserial,
    username VARCHAR(30),
	);
  INSERT INTO user (username) VALUES ('sato');
  INSERT INTO user (username) VALUES ('oohashi');
  INSERT INTO user (username) VALUES ('sasaki');

コンテナ作成・起動

準備ができたらコンテナを作成・起動していきます。

「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の使用方法を簡単にまとめてみました。

続けてお読みください

システム開発というお仕事

この記事をシェアする
  • Facebookアイコン
  • Twitterアイコン
  • LINEアイコン

お問い合わせ ITに関するお悩み不安が少しでもありましたら、
ぜひお気軽にお問い合わせください

お客様のお悩みや不安、課題などを丁寧に、そして誠実にお伺いいたします。

お問い合わせ
お電話でのお問い合わせ 03-5820-1777(平日10:00〜18:00)
よくあるご質問