コラム

[Docker]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のディストリビューションです)

次にカーネル更新のパッケージをインストールします。
「wsl --update」を実行

次にwslの規定バージョンを2にする為の設定をします。
「wsl --set-version Ubuntu 2」コマンド実行

この状態でインストールしたDocker Desktopを起動します。

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

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

続けてお読みください

開発の醍醐味

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

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

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

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