Windows 2025
Sponsored Link

Docker : Docker Compose を利用する2024/12/16

 

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.32.0/docker-compose-windows-x86_64.exe" -UseBasicParsing -OutFile 'C:\Windows\System32\docker-compose.exe' 

PS C:\Users\Administrator> docker-compose --version 
Docker Compose version v2.32.0
[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:ltsc2025

SHELL ["powershell", "-command"]
RUN Install-WindowsFeature Web-Server
RUN Invoke-WebRequest -Uri https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.10/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 = @"
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     432B
Step 1/7 : FROM mcr.microsoft.com/windows/servercore:ltsc2025
 ---> f9fb7d5c26c9
Step 2/7 : SHELL ["powershell", "-command"]
[+] Running 0/1
[+] Running 0/1 Building                          
 - Service web  Building                          
 ---> Removed intermediate container 65214e2180ce
[+] Running 0/1e6f
[+] Running 0/1 Building                          
 - Service web  Building                          

.....
.....

[+] Running 0/140e
[+] Running 0/1 Building                          
 - Service web  Building                          
 ---> Removed intermediate container b0035ab37f37
 ---> 9d2d11c741f2
[+] Running 3/3ilt 9d2d11c741f2
 ✓ Service web                  Built             
 ✓ Network docker-file_default  Created           
 ✓ Container docker-file-web-1  Started           

PS C:\Users\Administrator\docker-file> docker ps 
CONTAINER ID   IMAGE             COMMAND                   CREATED              STATUS              PORTS                NAMES
c8201674845f   docker-file-web   "C:\\ServiceMonitor.e…"   About a minute ago   Up About a minute   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                IMAGE             COMMAND                   SERVICE   CREATED         STATUS         PORTS
docker-file-web-1   docker-file-web   "C:\\ServiceMonitor.e…"   web       2 minutes ago   Up 2 minutes   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 
c8201674845f

PS C:\> exit 

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

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

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