【Docker】Docker compose ~ 入門編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2020/04/11/000000
https://dk521123.hatenablog.com/entry/2020/12/18/152949
https://dk521123.hatenablog.com/entry/2022/04/28/000000

の続き。

今回は、入門として、docker-compose (v1) / docker compose (v2)
の ハンズオンをしてみる。

目次

【1】docker-compose / docker compose up
 1)オプション「-d, --detach」
 2)オプション「-f」
 3)オプション「-p, --project」
 4)オプション「abort-on-container-exit」
【2】docker-compose down / docker compose down
 1)オプション「-v, --volumes」
 2)オプション「-f」
【3】Hello world

【1】docker-compose / docker compose up

* 関係するdocker-compose / docker composeコマンドを記す

https://docs.docker.jp/compose/reference/up.html
https://docs.docker.jp/engine/reference/commandline/compose_up.html

* サービス用のコンテナを構築、作成、起動、アタッチ

1)オプション「-d, --detach」

* デタッチド・モード
* バックグラウンドでコンテナを実行し、新しいコンテナ名を表示

2)オプション「-f」

* ファイル名を指定して実行

https://www.curict.com/item/df/df2f743.html
https://qiita.com/Y-Kanoh/items/09773381672985995fdf

用途

* デフォルトのファイル名以外を利用したい場合
* 別階層のファイルを指定したい場合

コマンド例

# docker compose -f ファイル名 コマンド
docker compose -f docker-compose-test.yml up

# 重ね掛けも可能
# docker compose -f docker-compose.yml -f docker-compose-test.yml up

使用上の注意

# 「docker compose コマンド -f ファイル名」だとエラー
$ docker compose up -f docker-compose.yml
unknown shorthand flag: 'f' in -f

3)オプション「-p, --project」

* プロジェクト名を変更
 => ${プロジェクト名}_${サービス名}にイメージ名を変更可能

https://future-architect.github.io/articles/20240620a/

4)オプション「abort-on-container-exit」

* コンテナが1つでも停止したら全てのコンテナを停止

使用上の注意

* -d と同時に使えない

【2】docker-compose down / docker compose down

https://docs.docker.jp/compose/reference/down.html
https://docs.docker.jp/engine/reference/commandline/compose_down.html

* コンテナを停止
* up で作成した以下のコンポーネントを削除
 + コンテナ
 + ネットワーク
 + ボリューム
 + イメージ

1)オプション「-v, --volumes」

# ボリュームを削除
docker compose -v down

2)オプション「-f」

docker compose -f docker-compose.yml -f docker-compose-test.yml -v down

【3】Hello world

* 恒例のHello worldをしてみる

docker-compose.yml

version: '3'
services:
  hello-world:
    image: docker/getting-started
    ports:
      - "80:80"

コマンド例

# Step1: 立ち上げる
sudo docker compose up -d

[+] Running 10/10
 ✔ hello-world 9 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                            13.2s 
   ✔ c158987b0551 Pull complete                                                        3.3s 
   ✔ 1e35f6679fab Pull complete                                                        5.2s 
   ✔ cb9626c74200 Pull complete                                                        5.2s 
   ✔ b6334b6ace34 Pull complete                                                        5.3s 
   ✔ f1d1c9928c82 Pull complete                                                        5.4s 
   ✔ 9b6f639ec6ea Pull complete                                                        5.5s 
   ✔ ee68d3549ec8 Pull complete                                                        8.6s 
   ✔ 33e0cbbb4673 Pull complete                                                        8.7s 
   ✔ 4f7e34c2de10 Pull complete                                                        8.9s 
[+] Running 2/2
 ✔ Network hello_default          Created                                              0.3s 
 ✔ Container hello-hello-world-1  Started                                              4.7s

# Step2: ブラウザで、http://localhost/ にアクセスする
# => 「Getting Started」が表示されればOK

# Step3: 後片付け
sudo docker compose down

# 以下のコマンドで確認
sudo docker compose ls

関連記事

Docker compose ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2022/04/28/000000
Docker compose ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker compose ~ docker-compose.yml ~
https://dk521123.hatenablog.com/entry/2020/12/18/152949
Docker compose ~ Version 2 ~
https://dk521123.hatenablog.com/entry/2023/01/02/000000
Docker compose ~ 拡張フィールド ~
https://dk521123.hatenablog.com/entry/2024/08/21/000445
Docker compose ~ 環境変数
https://dk521123.hatenablog.com/entry/2024/08/22/000539
Docker compose ~ PostgreSQL
https://dk521123.hatenablog.com/entry/2023/07/20/025544
Docker compose ~ Pgweb/pgAdmin ~
https://dk521123.hatenablog.com/entry/2023/08/10/111919
Docker compose ~ WordPress
https://dk521123.hatenablog.com/entry/2024/06/14/000000
Docker compose ~ LocalStack/Glue4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/25/021432
Dockerfile / Docker Compose でシェルを実行する
https://dk521123.hatenablog.com/entry/2023/07/21/234509
Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ 基本編 / dockerコマンド ~
https://dk521123.hatenablog.com/entry/2020/04/13/000000
Docker ~ 基本編 / Data Volume ~
https://dk521123.hatenablog.com/entry/2018/09/08/222100