dockerでApache+phpのイメージ作成02

Dockerを使ってApache+PHPのイメージを作ってみたいと思います。環境としては以下となります
※Dockerなどは既にインストールされている前提です

ホスト側

  • OS:CentOS7
  • カーネル:3.10.0-1160.42.2.el7.x86_64
  • Docker:20.10.17, build 100c701
  • Docker Compose:version v2.6.0

ホスト側はCentOS7となります。実験ではDebian11などでも試しましたが問題なく動きました。ホスト側のOSはCentOS、AlmaLinux、Debianなら動くと思います

Dockerイメージ

  • ベースイメージ:almaLinux8
  • Apache:2.4.x
  • PHP:8.0/FastCGI
  • 確認方法:phpinfoをブラウザで表示する
  • ポート:8080

ディレクトリパス

ディレクトリは以下のようになってます

1/home/ユーザー名/docker
2                
3                ├Dockerfile
4                
5                ├etc/supervisord.conf
6                
7                └docker-compose.yml

前回と今回の違い

今回は前回と違い、CMDコマンドだけでhttpdとphpが公開されるようにしたいと思います。

supervisorを使う

supervisorというのはデーモン化ツールとなります。サービス等をデーモン化するのにも使えるツールです。これを使っていきます

Dockerfile

※コードを載せます

01#イメージを取得。ここではalmalinux8のイメージ
02FROM almalinux
03 
04#実行コマンドを書いていく
05RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
06RUN dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
07RUN dnf module enable php:remi-8.0 -y
08RUN dnf install -y httpd
09RUN dnf install -y php
10RUN mkdir /run/php-fpm/
11RUN dnf -y install supervisor
12#ファイルコピー
13COPY ./etc/supervisord.conf /etc/supervisord.d/supervisord.conf
14 
15 
16#スーパーバイザーを実行
17CMD ["supervisord", "-c", "/etc/supervisord.d/supervisord.conf"]

コード解説

基本的には同じですが、RUN dnf -y install supervisorでsupervisorをインストールしてます。

COPYコマンド

1COPY ./etc/supervisord.conf /etc/supervisord.d/supervisord.conf

でsupervisord.confの中身をコピーしてます。COPYを使うとビルドするときに一緒に埋め込みができます。

supervisord.conf の中身

1[supervisord]
2nodaemon=true
3 
4[program:httpd]
5command=/usr/sbin/httpd -D FOREGROUND
6 
7[program:php-fpm]
8command=php-fpm

これがsupervisordの中の設定です。httpdとphp-fpmを起動してます

docker-compose.yml

今度はDockerFileではなくymlファイルを作成します

1version: '3'
2services:
3  almalinux8:
4    container_name: "almalinux8"
5    build:
6       dockerfile: ./Dockerfile
7    tty: true  # ← これがないとコンテナにログインできない
8    ports:
9        - 8080:80

こっちは変更無しです

これでビルドして動かせば完成です

YouTube

実際にYouTubeにアップしたので動画を載せておきます

個人支援・寄付について

サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。

  • ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS