Windows 2022
Sponsored Link

Docker : Docker Compose を利用する2022/01/25

 
Docker Compose をインストールすると、複数コンテナーの定義や実行が容易に可能となります。
[1] Docker Compose をインストールします。ダウンロードするバージョンはリリースページで確認ください。
⇒ https://github.com/docker/compose/releases
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> Invoke-WebRequest "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\docker\docker-compose.exe 

PS C:\Users\Administrator> docker-compose --version 
Docker Compose version v2.2.3
[2] 例として、IIS が稼働するコンテナーの設定です。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# Dockerfile 作成
PS C:\Users\Administrator> mkdir docker-file 
PS C:\Users\Administrator> cd docker-file 

PS C:\Users\Administrator\docker-file> $str_file = @"
FROM mcr.microsoft.com/windows/servercore:ltsc2022

SHELL ["powershell", "-command"]
RUN Install-WindowsFeature Web-Server
RUN Invoke-WebRequest -Uri https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe -OutFile C:\ServiceMonitor.exe

EXPOSE 80

ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]
"@ 

PS C:\Users\Administrator\docker-file> $str_file | Out-File Dockerfile -Encoding Default 

# アプリケーションの構成を定義
PS C:\Users\Administrator\docker-file> $str_file2 = @"
version: '3'
services:
  web:
    build: .
    ports:
      - "80:80"
    volumes:
      - C:\iis:C:\inetpub\wwwroot
"@ 

PS C:\Users\Administrator\docker-file> $str_file2 | Out-File docker-compose.yml -Encoding Default 

PS C:\Users\Administrator\docker-file> mkdir C:\iis 

# アプリケーションをビルド/実行
PS C:\Users\Administrator\docker-file> docker-compose up -d 
Sending build context to Docker daemon     513B
Step 1/6 : FROM mcr.microsoft.com/windows/servercore:ltsc2022
 ---> 11cbc9e36c7a
Step 2/6 : SHELL ["powershell", "-command"]
 ---> Running in e70646a28478
Removing intermediate container e70646a28478
 ---> 9e1231e7ae71
Step 3/6 : RUN Install-WindowsFeature Web-Server
 ---> Running in d7c2c18180cb

.....
.....

Step 6/6 : ENTRYPOINT ["C:\\ServiceMonitor.exe", "w3svc"]
 ---> Running in b7ab30b05ce9
Removing intermediate container b7ab30b05ce9
 ---> db13c58d6184
Successfully built db13c58d6184
Successfully tagged docker-file_web:latest
[+] Running 1/1
 - Container docker-file-web-1  Started

PS C:\Users\Administrator\docker-file> docker ps 
CONTAINER ID   IMAGE              COMMAND                   CREATED          STATUS          PORTS                NAMES
71bdab92e0d5   docker-file_web   "C:\\ServiceMonitor.e…"   19 seconds ago   Up 17 seconds   0.0.0.0:80->80/tcp   docker-file-web-1

# テストファイル作成
PS C:\Users\Administrator\docker-file> Write-Output "Docker Compose Test Page" | Out-File C:\iis\Default.htm -Encoding Default 

# アクセス確認
PS C:\Users\Administrator\docker-file> curl.exe localhost 
Docker Compose Test Page
[3] Docker Compose その他の基本的な操作です。
PS C:\Users\Administrator\docker-file> docker-compose ps 
NAME                 COMMAND                   SERVICE             STATUS              PORTS
docker-file-web-1   "C:\\ServiceMonitor.e…"   web                 running             0.0.0.0:80->80/tcp

# アプリケーションを構成するコンテナーでコマンド実行
# コンテナー名は [docker-compose.yml] で指定した名称
PS C:\Users\Administrator\docker-file> docker-compose exec web powershell 

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\> hostname 
71bdab92e0d5

PS C:\> exit 

# アプリケーションを終了し、構成するコンテナーを全て停止
PS C:\Users\Administrator\docker-file> docker-compose stop 
[+] Running 1/1
 - Container docker-file-web-1  Stopped

# アプリケーション起動
PS C:\Users\Administrator\docker-file> docker-compose up 
[+] Running 1/0
 - Container docker-file-web-1  Created      0.0s
Attaching to docker-file-web-1

# アプリケーションに関連するコンテナーを全て削除
# 起動中のコンテナーは削除しない
PS C:\Users\Administrator\docker-file> docker-compose rm 
? Going to remove docker-file-web-1 Yes
[+] Running 1/0ve docker-file-web-1 (y/N) y
 - Container docker-file-web-1  Removed
関連コンテンツ