WSL #32:Docker上にPHP環境を作る


環境

■ WSLバージョン:
WSL バージョン: 2.3.24.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.22631.4317

■ Ubuntuバージョン:
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble

■ Dockerバージョン:
Version: 27.3.1

はじめに

過去記事「Docker:PHP環境を作る 1」で Windows+Docker Desktop上にPHP環境を作成した。
この記事を参考にWSL Ubuntu上のDocker EngineにPHP環境を作成する。

WSL+Ubuntu+Docker上にPHP環境を作る

■ カスタムネットワーク作成
他コンテナと通信したいので、先にカスタムネットワークを "docker_nw" の名前で作成する。
docker network create --driver bridge docker_nw

⇒ 過去記事「WSL #37:Dockerカスタムネットワークを作成する」参照

■ 永続化用フォルダ作成
設定ファイルやhtmlを置くためのフォルダをUbuntu上に作成する。
・php - PHP設定ファイル用 
・apache - Apache設定ファイル用
・html - html格納用
とし、これらはユーザーディレクトリ上に置くことにした。
      mkdir -p ~/docker/php
      mkdir -p ~/docker/apache
      mkdir -p ~/docker/html
    

■ Dockerイメージ取得
今回はphp8.3を使用する。
      sudo docker pull php:8.3-apache
    

■ コンテナ仮起動
コンテナ上の設定ファイルを抜き出すため、とりあえずコンテナを起動する。
      sudo docker run --name php -d php:8.3-apache
    

■ 設定ファイルコピー
コンテナよりphpとapacheの設定を永続化用フォルダにコピーする。
phpは /usr/local/etc/php/php.ini-development、
apacheは /etc/apache2/apache2.conf および
/etc/apache2/sites-available/000-default.conf をコピーした。
      sudo docker cp php:/usr/local/etc/php/php.ini-development ~/docker/php/
      sudo docker cp php:/etc/apache2/apache2.conf ~/docker/apache/
      sudo docker cp php:/etc/apache2/sites-available/000-default.conf ~/docker/apache/
    

■ コンテナ削除
コピーして設定ファイルを使用したいので、仮起動したコンテナを削除し、コンテナを作成し直す。
      sudo docker stop php
      sudo docker rm php
    

■ コンテナ起動
以下パラメータでコンテナを起動する。
-dバックグラウンドで起動
--nameコンテナ名は "php" とした
-pコンテナの80ポートをホストの8081にマッピング
(8080はFessで使っているので8081とした)
-v永続化した3つのファイルをコンテナに接続
--networkカスタムネットワーク "docker_nw" を使用
      sudo docker run -d --name php -p 8081:80 \
      -v ~/docker/php:/usr/local/etc/php \
      -v ~/docker/apache/apache2.conf:/etc/apache2/apche2.conf \
      -v ~/docker/apache/000-default.conf:/etc/apache2/site-available/000-default.conf \
      -v ~/docker/html:/var/www/html \
      --network docker_nw \
      php:8.3-apache
    

■ 仮テスト
Windows上でブラウザを起動し "localhost:8081" を表示してみる。
Apacheが出すエラーが表示されるので、コンテナ自体は問題なく稼働していることがわかる。

■ 空のhtmlを作成してテスト
Windowsエクスプローラーで以下フォルダを開き、空のhtmlファイル(index.html)を作成する。
[Linux] - [Ubuntu] - [home] - [user] - [docker] - [html]
Windows上のブラウザで "localhost:8081" を表示。
htmlも正常に認識していることが確認できた。


WSL, WSL2, Windows Subsystem for Linux, Docker Container, PHP, Apache

0 件のコメント:

その他の記事