【Docker】てっとり早くPHP8環境を構築する

Docker

1. 概要

最新のPHP8系をローカル環境でサクッと動かしてみます。

paiza.ioのような便利ツールもありますが、もう少し込み入った処理をテストしたい場面もあるはずです。(例:ファイル入出力やライブラリの読み込み)

今回は、自分用の環境を簡単に用意するための備忘録として、DockerでPHP動作環境を作成します。

2. ファイル構成

(root)
  ├app
  │ ├ csv_read.php
  │ └ sample.csv
  │
  └ docker-compose.yml

3. docker-compose.ymlファイルを用意

version: "3.8"
services:
  php:
    container_name: php82
    image: php:8.2-cli
    volumes:
      - ./app:/php/src
    working_dir: /php/src
    tty: true

4. コンテナをビルドして立ち上げる

docker compose up -d --build

起動していることを確認

docker ps

PHP8.2環境ができていることを確認

# コンテナへ入る
$ docker exec -it php82 bash

# インストールされているPHPバージョンの確認
$ php -v

5. PHPスクリプトを動かしてみる

せっかくなので、paizaでは試せないCSVファイルの読み込みを試してみます。

<?php

// CSVファイルの読み込み
$file = fopen('./sample.csv', 'r');

// 船員たちを格納
$members = [];

// ヘッダーの読み込み
$headers = fgetcsv($file);

// 1人分ずつ読み込み
while ($line = fgetcsv($file)) {
    $row = [];
    foreach ($line as $index => $value) {
        $key = $headers[$index];
        $row[$key] = $value;
    }
    $members[] = $row;
}

// ファイルを閉じる
fclose($file);

// 出力
print_r($members);
id,name,position
1,モンキー・D・ルフィ,船長
2,ロロノア・ゾロ,戦闘員
3,ナミ,航海士
4,ウソップ,狙撃手
5,ヴィンスモーク・サンジ,コック
6,トニートニー・チョッパー,船医
7,ニコ・ロビン,考古学者
8,フランキー,船大工
9,ブルック,音楽家
10,ジンベエ,操舵手
コンテナへ入る
docker exec -it php82 bash

実行
php csv_read.php
出力結果
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => モンキー・D・ルフィ
            [position] => 船長
        )

    [1] => Array
        (
            [id] => 2
            [name] => ロロノア・ゾロ
            [position] => 戦闘員
        )

    [2] => Array
        (
            [id] => 3
            [name] => ナミ
            [position] => 航海士
        )

    [3] => Array
        (
            [id] => 4
            [name] => ウソップ
            [position] => 狙撃手
        )

    [4] => Array
        (
            [id] => 5
            [name] => ヴィンスモーク・サンジ
            [position] => コック
        )

    [5] => Array
        (
            [id] => 6
            [name] => トニートニー・チョッパー
            [position] => 船医
        )

    [6] => Array
        (
            [id] => 7
            [name] => ニコ・ロビン
            [position] => 考古学者
        )

    [7] => Array
        (
            [id] => 8
            [name] => フランキー
            [position] => 船大工
        )

    [8] => Array
        (
            [id] => 9
            [name] => ブルック
            [position] => 音楽家
        )

    [9] => Array
        (
            [id] => 10
            [name] => ジンベエ
            [position] => 操舵手
        )

)

6. コンテナの停止・削除

今回は用済みだが、また使うかもしれない場合
docker compose stop

もう使うことがない場合(例:新しいバージョンが出た、cli以外のコンテナを使いたい等)
docker compose down -v

7. 最後に

今回はPHPスクリプトを動かすための最低限の構築を行いました。

簡易的なローカル環境なので、composerによるライブラリ導入やデータベース構築・連携といったことも自由にできます。

簡単なテストや不具合調査にお役立てください。

8. 参考

投稿者プロフィール

KatoShingo
学んだことをアウトプットしていきます!
好きなこと:音楽鑑賞🎵 / ドライブ🚗 / サウナ🧖

関連記事

  1. 【Docker】初めてのDocker#3(docker-compose…

  2. Docker

    WSL2上のUbuntuの中でDockerを動かすには?

  3. Docker

    【Docker】DockerでMySQLを起動

  4. Docker

    【Docker】Vue2と3 + TypeScript開発環境を構築す…

  5. 【Docker】初めてのDocker#2(Hello World~コン…

  6. 【Docker】初めてのDocker#1(環境構築)

最近の記事

  1. PHP
  2. PHP
  3. TypeScript
  4. Docker
  5. AWS
  6. Docker

制作実績一覧

  1. Checkeys