【Docker】Docker compose ~ 環境構築編 ~

■ はじめに

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

の続き。

docker-compose は、Docker Engineとは別ソフトウェアなので
インストールする必要があるので、メモ。
更新方法も載せておく。

目次

【0】確認
【1】docker-compose のインストール
 方法1:マニュアルインストール
 方法2:apt でのインストール
 方法3:pip でのインストール
【2】docker-compose のアンインストール
【3】Hello World - nginxサーバ -
 1)docker-compose.yml を作成する
 2)コンテナ作成および起動
 3)動作確認
 4)コンテナ停止

【0】確認

# インストールされているか確認
docker-compose --version

【1】インストール

方法1:マニュアルインストール

https://docs.docker.com/engine/install/ubuntu/

で記載されているやり方。

https://dk521123.hatenablog.com/entry/2021/11/14/224428

より抜粋。

[1] リポジトリのセットアップ

sudo apt-get update

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

[2] Docker Engineをインストール

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

[3] Docker composeをインストール

# インストール用ディレクトリを作成(全ユーザ向け)
sudo mkdir -p /usr/local/libexec/docker/cli-plugins

# docker-composeをインストール
cd /usr/local/libexec/docker/cli-plugins
# See and check the version of Docker from https://github.com/docker/compose/releases/  
sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o docker-compose

# 実行権限の付与
sudo chmod +x /usr/local/libexec/docker/cli-plugins/docker-compose

# 確認
docker compose version

[4] [任意] docker を sudo なしで実行する

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2023/11/22/000000

方法2:apt でのインストール

https://docs.docker.com/compose/install/linux/#install-using-the-repository

sudo apt-get update
sudo apt-get install docker-compose

# 全ユーザ向け
mkdir -p /usr/local/lib/docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
# 実行権限の付与
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

docker compose version

補足:docker-compose-plugin

sudo apt-get install docker-compose-plugin
だと「E: Unable to locate package docker-compose-plugin」
ってエラーになる

https://qiita.com/kawaichi0228/items/c5d2ea2bbe5d160d8491

方法3:pip でのインストール

sudo apt install -y python3 python3-pip
sudo pip3 install docker-compose

【2】docker-compose のアンインストール

https://docs.docker.jp/compose/install/uninstall.html

sudo apt-get remove docker-compose-plugin

手動インストールした場合

rm $DOCKER_CONFIG/cli-plugins/docker-compose

【3】Hello World - nginxサーバ -

* 最後に、Hello World として、nginxサーバを立ち上げる

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04-ja#2-docker-compose-yml

参考動画

 ハンズオンについては、
以下の動画(44:20辺りから)を参考にさせてもらった。

https://www.youtube.com/watch?v=5d8O7jm7Q5c&t=586s

0)HTML準備

mkdir ~/compose-demo
cd ~/compose-demo

mkdir app
echo "<html><body><h1>Hello World! This is just a sample...</h1></body></html>" > ./app/index.html

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

* docker-compose.yml ファイルの書き方の詳細は、
 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/12/18/152949

vi docker-compose.yml

docker-compose.yml

version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

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

docker-compose.ymlに記載されている定義をもとに
docker-compose upコマンドで、コンテナ作成および起動を行う

コマンド例

# -d は、バックグラウンド起動
docker-compose up -d

# [オプション] ログをtail的に監視し、表示
docker logs user_web-server_1 -f

3)動作確認

ブラウザで、設定したNginxに対して
http://[IPアドレス or hostname]:8080/ でアクセスする
 => 「Hello World! This is just a sample...」が表示されたらOK!
 => 「docker logs user_web-server_1 -f」してたら、ログが表示されるはず

4)コンテナ停止

# docker-compose downコマンドで、コンテナ停止
docker-compose down

関連記事

Docker compose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/05/21/222910
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 ~ WordPress
https://dk521123.hatenablog.com/entry/2024/06/14/000000
Docker compose ~ LocalStack/Glue4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/25/021432
Docker ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/24/160044
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker ~ Linux / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/04/10/234030
Docker ~ docker を sudo なしで実行する ~
https://dk521123.hatenablog.com/entry/2023/11/22/000000
Docker に関するトラブル
https://dk521123.hatenablog.com/entry/2017/09/24/162257