Podmanで導入したapache-phpに各種PHPモジュールを追加する方法
先日Podmanでapache-php8.4を導入したが、phpinfoで確認するとモジュール類はほぼインストールされていなかった。各種モジュールの追加方法を調べたところ、apache-php8.4と一緒に各種モジュールをインストールするイメージファイルを作成し、コンテナを作り直すのがよさそう。以下に対応方法をメモ。
目次
環境について
VPS
今回はKAGOYA CLOUD VPSのCPU1コア / メモリ1GBプランで作業した。SSH接続は公式案内の通り以下でログインできる。
- 接続ポート -> 22
- ユーザ名 -> root
- パスワード or 秘密鍵 -> インスタンス作成時に選択したもの
ホスト(VPS)側 AlmaLinux / Apache
詳細なバージョンは以下の通り。
# AlmaLinuxのバージョン確認 cat /etc/redhat-release # 実行結果 AlmaLinux release 8.10 (Cerulean Leopard) # Apacheのバージョン確認 httpd -v # 実行結果 Server version: Apache/2.4.37 (AlmaLinux)
対応方法
イメージをビルドするためのファイルを作成
以下内容の「Dockerfile」というファイル(拡張子なし)を作成し、ホスト側の適当なディレクトリにアップロードする。
# Docker公式PHP8.4&Apache同梱版イメージを指定
FROM docker.io/library/php:8.4-apache
# PHP拡張機能インストーラーをダウンロードして配置
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
# 実行権限を与え、必要なモジュールを一括インストール
RUN chmod +x /usr/local/bin/install-php-extensions && \
install-php-extensions \
apcu \
bcmath \
exif \
gd \
imagick \
intl \
memcache \
memcached \
mysqli \
pdo_mysql \
opcache \
redis \
zip \
sockets \
sysvsem
# Apacheのrewriteモジュールを有効化
RUN a2enmod rewrite
イメージのビルド
サーバにSSH接続し以下コマンドでイメージをビルドする。メモリ1GBの環境で5分程度かかった。
# Dockerfileを設置したディレクトリに移動 cd /path/to # 「apache-php8.4-plus」という名前でイメージをビルド podman build -t apache-php8.4-plus .
コンテナの再作成
正常にビルドできたらCockpitのPodmanコンテナページにビルドしたイメージが表示される筈なので過去記事を参考にコンテナを再作成する。
CLIでコンテナを作成する場合
Cockpitでのコンテナ作成ではなく、サーバにSSH接続しCLIで作成する場合は以下コマンドになる筈(コメントは説明用なので不要)。
#バックグラウンド(デタッチドモード)でPodmanを起動。ターミナルを閉じても動き続ける podman run -d \ #コンテナ名の指定 --name apache-php8.4-plus \ #ポートマッピング設定。IPアドレス、ホストポート、コンテナポートを指定 -p 127.0.0.1:8080:80 \ #ボリューム設定。ホストパスとコンテナパスを指定。ZオプションはSELinuxのセキュリティ権限を適切に自動調整するため -v /var/www/html/podman_test_1:/var/www/html:Z \ #イメージの指定 apache-php8.4-plus
インストール状況の確認
phpinfo用のファイルを適当なディレクトリにアップロードし、ブラウザからアクセスする。
「Additional .ini files parsed」欄に導入済みモジュールが表示される。
私の環境だとデフォルトのapache-php8.4とモジュール追加後で以下の表示が確認できた。
デフォルトのapache-php8.4
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
モジュール追加後
/usr/local/etc/php/conf.d/docker-php-ext-apcu.ini, /usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini, /usr/local/etc/php/conf.d/docker-php-ext-exif.ini, /usr/local/etc/php/conf.d/docker-php-ext-gd.ini, /usr/local/etc/php/conf.d/docker-php-ext-imagick.ini, /usr/local/etc/php/conf.d/docker-php-ext-intl.ini, /usr/local/etc/php/conf.d/docker-php-ext-memcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-mysqli.ini, /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini, /usr/local/etc/php/conf.d/docker-php-ext-redis.ini, /usr/local/etc/php/conf.d/docker-php-ext-sockets.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini, /usr/local/etc/php/conf.d/docker-php-ext-sysvsem.ini, /usr/local/etc/php/conf.d/docker-php-ext-zip.ini, /usr/local/etc/php/conf.d/xx-php-ext-memcached.ini
補足
Sublime TextでDockerfile編集する場合
デフォルトだとDockerfileのシンタックスハイライトは無い筈。
「Ctrl + Shift + P」→「Install Package」を入力して選択の上、エンターキー押下→「Dockerfile Syntax Highlighting」を入力して検索の上、選択する。
Dockerfileを開きなおすとシンタックスハイライトが有効化されている筈。
docker-php-extension-installer
Github
関連記事
-
-
CockpitとPodmanでWebサーバ用コンテナを作成しHello Worldページを表示する方法
Cockpitにはcockpit-podmanというPodman(Dockerの ...
-
-
Podmanで作成したApache用コンテナにドメインを割り当て、ポート指定なしでアクセス可能にする方法
先日PodmanでWebサーバ用コンテナを作成したが、ブラウザからアクセスする際 ...
-
-
Podmanで作成したApache用コンテナにLet's Encryptを導入しHTTPS接続できるようにする方法
先日Podmanで作成したApache用コンテナに対してドメインを割り当てたが、 ...