PHP入門:Dockerでcomposerの実行環境を構築する -vol.2-

スポンサーリンク
PHP入門:Dockerでcomposerの実行環境を構築する -vol.2- 環境構築
PHP入門:Dockerでcomposerの実行環境を構築する -vol.2-
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、PHPにおけるComposerの実行環境をDockerで構築する方法についてご紹介します。

スポンサーリンク

背景

PHPにおけるComposerの実行環境をDockerで構築する方法について調査する機会があったので、そのときの内容を備忘として残しました。

今回作成したファイルは下記のGitHUBにあります。

概要

前回構築したPHPのComposer環境でPHPUnitをインストールするために、下記のコマンドを実行しました。

composer require --dev phpunit/phpunit

実行結果は下記のようになりました。

Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 26 installs, 0 updates, 0 removals
    Failed to download sebastian/version from dist: The zip extension and unzip/7z commands are both missing, skipping.
The php.ini used by your command-line PHP is: /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    Now trying to download from source

In GitDownloader.php line 82:
                                                            
  git was not found in your PATH, skipping source download

そのため、unzipコマンドをインストールしました。PHPUnitのインストールに必要な設定を次のセクションに記載しました。

構成ファイル一覧

下記のファイルを用意します。各ファイルの内容は各セクションに記載しています。

        modified:   php/Dockerfile
        new file:   php/src/Sample.php
        new file:   php/src/SampleTest.php
        new file:   php/src/composer.json
        new file:   php/src/composer.lock

php/Dockerfile

 FROM php:8.2-cli
 
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends \
+        unzip \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/*
+
 # composerのインストール
 COPY --from=composer:2.6.6 /usr/bin/composer /usr/bin/composer

php/src/Sample.php

<?php

require "Sample.php";

use PHPUnit\Framework\TestCase;

class SampleTest extends TestCase
{
    public function testHello()
    {
        $this->assertSame('Hello, World!!', hello());
    }
}

php/src/composer.json

下記のコマンドを実行したときに作成されます。

composer require --dev phpunit/phpunit

php/src/composer.lock

下記のコマンドを実行したときに作成されます。

composer require --dev phpunit/phpunit

動作確認

下記のコマンドを実行します。

make build

make login

PHPのコンテナにログインできたら下記のコマンドを実行します。

composer install

vendor/bin/phpunit SampleTest.php

下記のような実行結果になっていれば成功です。

PHPUnit 10.5.5 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.2.14

.                                                                   1 / 1 (100%)

Time: 00:00.057, Memory: 6.00 MB

OK (1 test, 1 assertion)

解説

php/Dockerfile

このDockerfileの RUN コマンドは、Debian系のLinuxディストリビューションであるUbuntuなどで使用される apt-get パッケージマネージャを使用して、パッケージのインストールとクリーンアップを行っています。以下はコードの解説です。

RUN apt-get update \
 && apt-get install -y --no-install-recommends \
        unzip \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*
  • apt-get update: パッケージリストを更新します。これにより、最新のパッケージ情報が取得されます。
  • apt-get install -y --no-install-recommends unzip: unzip パッケージをインストールします。
  • -y: 対話的な確認なしでインストールを行います。
  • --no-install-recommends: 推奨されるパッケージをインストールしないようにします。これにより、不要な依存関係が増えるのを防ぎます。
  • apt-get clean: インストール時に生成されたキャッシュや一時ファイルを削除します。これにより、イメージのサイズを減少させます。
  • rm -rf /var/lib/apt/lists/*: パッケージ情報のキャッシュを削除します。これもイメージのサイズを減少させる目的があります。ただし、この操作はキャッシュをクリアするため、パッケージ情報の再ダウンロードが必要になります。

このセクションは、Dockerイメージ内でのパッケージのインストールとクリーンアップを行っています。これにより、余分なデータが残らず、イメージサイズを最小限に保つことができます。

composer require –dev phpunit/phpunit

このコマンドは、Composerを使用してPHPプロジェクトにPHPUnitを開発用の依存関係として追加するものです。具体的には、PHPUnitはPHPのユニットテストフレームワークであり、開発者がコードの品質を保つためにテストを作成し、実行するのに役立ちます。

コマンドの構造:

composer require --dev phpunit/phpunit

解説:

  • composer require: Composerを使用してパッケージを追加するコマンドです。
  • --dev: このオプションは、パッケージを開発時のみに必要とする依存関係として追加します。これにより、本番環境へのデプロイ時には不要なパッケージが含まれなくなります。
  • phpunit/phpunit: PHPUnitパッケージを指定しています。

このコマンドを実行すると、Composerはcomposer.jsonファイルを更新し、require-devセクションにPHPUnitの依存関係を追加します。その後、必要なパッケージをダウンロードしてvendorディレクトリにインストールします。PHPUnitは主にPHPUnit.xml構成ファイルを使用してテストスイートを実行するため、適切な設定を行ってPHPUnitをプロジェクトに統合することが期待されます。

おわりに

今日は、PHPにおけるComposerの実行環境をDockerで構築する方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました