
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
ディレクトリパス
ディレクトリは以下のようになってます
前回と今回の違い
今回は前回と違い、CMDコマンドだけでhttpdとphpが公開されるようにしたいと思います。
supervisorを使う
supervisorというのはデーモン化ツールとなります。サービス等をデーモン化するのにも使えるツールです。これを使っていきます
Dockerfile
※コードを載せます
01 | #イメージを取得。ここではalmalinux8のイメージ |
05 | RUN dnf install -y https: |
06 | RUN dnf install -y https: |
07 | RUN dnf module enable php:remi-8.0 -y |
08 | RUN dnf install -y httpd |
10 | RUN mkdir /run/php-fpm/ |
11 | RUN dnf -y install supervisor |
13 | COPY ./etc/supervisord.conf /etc/supervisord.d/supervisord.conf |
17 | CMD [ "supervisord" , "-c" , "/etc/supervisord.d/supervisord.conf" ] |
コード解説
基本的には同じですが、RUN dnf -y install supervisorでsupervisorをインストールしてます。
COPYコマンド
1 | COPY ./etc/supervisord.conf /etc/supervisord.d/supervisord.conf |
でsupervisord.confの中身をコピーしてます。COPYを使うとビルドするときに一緒に埋め込みができます。
supervisord.conf の中身
5 | command=/usr/sbin/httpd -D FOREGROUND |
これがsupervisordの中の設定です。httpdとphp-fpmを起動してます
docker-compose.yml
今度はDockerFileではなくymlファイルを作成します
4 | container_name: "almalinux8" |
6 | dockerfile: ./Dockerfile |
7 | tty: true # ← これがないとコンテナにログインできない |
こっちは変更無しです
これでビルドして動かせば完成です
YouTube
実際にYouTubeにアップしたので動画を載せておきます
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS