【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コマンド
 1)docker-compose up -d / docker compose up -d
 2)docker-compose down / docker compose down
【2】Hello world
【3】WordPress を構築する
 1)docker-compose.yml を作成する
 2)コンテナ作成および起動
 3)動作確認
 4)コンテナ停止

【1】docker-compose / docker composeコマンド

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

1)docker-compose up -d / docker compose up -d

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

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

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

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

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 で作成した以下のコンポーネントを削除
 + コンテナ
 + ネットワーク
 + ボリューム
 + イメージ

【2】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

【3】WordPress を構築する

https://dk521123.hatenablog.com/entry/2022/04/29/000000

で行った WordPress (MySQL+WordPress)を
docker-compose で構築する

以下の本 および 公式ドキュメントのクィックスタートを
参考にしている。

https://docs.docker.jp/compose/wordpress.html

補足1:元ネタとなった図書館で借りた本

1)docker-compose.yml を作成する

* docker compose (v2)の場合は、「compose.yaml」が基本

docker-compose.yml

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - network-for-wordpress
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    networks:
      - network-for-wordpress
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
networks:
  network-for-wordpress:
volumes:
  db_data:
  wordpress_data:

2)コンテナ作成および起動

docker-compose up -d
# docker compose up -d

3)動作確認

* ブラウザで以下にアクセスする

http://localhost:8000

4)コンテナ停止

# コンテナとデフォルトネットワーク、
# さらに WordPress データベースも削除
docker-compose down --volumes
# docker compose down --volumes

関連記事

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 ~ 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 ~ 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