環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

AlmaLinux8でdocker, docker-composeをインストールする

AlmaLinux8でdocker, docker-composeをインストールする

本日はdocker, docker-composeをインストールしてみます。

最後にテストとして、nginx+php-fpmを立ち上げてみて、アプリ確認とします。

環境

  • EC2 t3.micro
  • AlmaLinux8

手順

アップデート

dnf -y update

基本インストール

dnf -y install git wget

※ gitは手順に出てきませんが、個人的に必要だったので入ってますw

リポジトリ追加

# 追加
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 確認
dnf repolist

インストール

# docker
dnf -y install docker-ce

# docker-compose
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64
chmod +x /usr/local/bin/docker-compose

# 確認
docker --version

グループ追加

個人ユーザーでdockerを実行したい場合にはグループ追加も行いましょう。

※ 今回はrootのまま最後まで作業しています。

usermod -aG docker [個人ユーザー]

docker起動

systemctl start docker
systemctl enable docker

なんとインストールはこれだけで完了ですね。短い!

確認

それではnginx+php-fpmの環境を作るために少し準備が必要なので、作業します。

準備

# ディレクトリ作成
mkdir -p ~/docker/web
mkdir -p ~/docker/src

# docker-compose.yml作成
cd ~/docker
vi docker-compose.yml
-----
version: '3' 
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    depends_on:
      - app
    volumes:
      - ./web/default.conf:/etc/nginx/conf.d/default.conf
      - ./src:/var/www/
  app:
    image: php:7.4.28-fpm
    volumes:
        - ./src:/var/www/
-----

# docker-compose.yml作成
cd ~/docker
vi ./web/default.conf
-----
server {
    listen 80;
    root  /var/www/;
    index index.php index.html;
    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;
    location / { #以下を追記
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~ \.php$ {
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass   app:9000;
          fastcgi_index  index.php;
          include        fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param  PATH_INFO $fastcgi_path_info;
      }
}
-----

# 実行ファイル作成
vi ./src/index.php
-----
<?php
phpinfo();
?>
-----

実行

それでは実行してみましょう

cd ~/docker
docker-compose up -d

ブラウザ確認

http://IPアドレス/にアクセス

ちなみにコンテナやイメージを削除するには・・・

# 実行中のコンテナを確認
docker ps -a
--------
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS         PORTS                               NAMES
2f62f9c922a1   nginx:latest     "/docker-entrypoint.…"   8 minutes ago   Up 8 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   docker-web-1
f4305ddec26b   php:7.4.28-fpm   "docker-php-entrypoi…"   8 minutes ago   Up 8 minutes   9000/tcp                            docker-app-1
--------

# コンテナを停止
docker stop 2f62f9c922a1
docker stop f4305ddec26b

# コンテナを確認
docker ps -a
--------
CONTAINER ID   IMAGE            COMMAND                  CREATED         STATUS                     PORTS     NAMES
2f62f9c922a1   nginx:latest     "/docker-entrypoint.…"   9 minutes ago   Exited (0) 7 seconds ago             docker-web-1
f4305ddec26b   php:7.4.28-fpm   "docker-php-entrypoi…"   9 minutes ago   Exited (0) 2 seconds ago             docker-app-1
--------
-> STATUSがExitedになりました

# コンテナを削除
docker rm -f 2f62f9c922a1
docker rm -f f4305ddec26b

# イメージ確認
docker image ls
--------
REPOSITORY   TAG          IMAGE ID       CREATED      SIZE
nginx        latest       12766a6745ee   9 days ago   142MB
php          7.4.28-fpm   aa6c0c7d733d   9 days ago   443MB
--------
-> コンテナを削除しても、まだイメージは残っています

# イメージ削除
docker rmi 12766a6745ee
docker rmi aa6c0c7d733d


fin.

以上で、docker, docker-composeインストール、さらにnginx+php-fpm環境の簡易構築手順は完了です。