ライブラリ単体でちょっとした動作確認を行いたい時に便利です。
最小限の構成のため、コードを1行ずつ理解しながら進めやすいと思います。
ゴール
composerを利用してPHPUnitをインストールし、動作検証まで実行します。
- Dockerを利用してcomposerをインストールできる。
- コンテナにライブラリをインストールできる。
最終的なディレクトリ構成
.
├── Calculation.php
├── CalculationTest.php
├── Dockerfile
├── composer.json
├── composer.lock
├── docker-compose.yml
└── vendor
注意点
記事中のコードは自習用を想定しているため、下記は考慮していません。
- vendor/のマウント設定
- composer.jsonの詳細な設定
composerのインストール
ディレクトリ構成
$ tree
.
├── Dockerfile # New!
└── docker-compose.yml # New!
Dockerfileの作成
- 公式サイトの設定を流用しています。
Php - Official Image | Docker Hub
Composer - Official Image | Docker Hub -
git
zip
unzip
はcomposerを利用したライブラリのインストールに必要なパッケージです。
FROM php:7.4-cli
# パッケージリスト更新後にパッケージをインストール
RUN apt-get update && apt-get install -y git zip unzip
COPY . /usr/src/myapp
# composerのインストール
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR /usr/src/myapp
docker-compose.ymlの作成
- ローカルの変更をコンテナへマウントしています。
- それ以外はコンテナの起動を継続させるための最小限の設定です。
docker-compose.yml
version: "3"
services:
my-php-app:
# カレントディレクトリでイメージを構築
build: .
# カレントディレクトリをコンテナへマウント
volumes:
- "./:/usr/src/myapp"
# プロセスを継続させてコンテナの正常終了を防ぐ
stdin_open: true
コンテナ起動
コンテナを起動します。
$ docker-compose up -d
コンテナの起動状況を確認します。
$ docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
php_composer_test-my-php-app-1 "docker-php-entrypoi…" my-php-app running
インストール確認
コンテナ内でcomposerのバージョンを確認します。
$ docker-compose exec my-php-app composer --version
Composer version 2.2.7 2022-02-25 11:12:27
composerのインストールまで確認できました。
ライブラリのインストール
composer.jsonを作成後、composer installを実行します。
ディレクトリ構成
$ tree
.
├── Dockerfile
├── composer.json # New!
└── docker-compose.yml
composer.jsonの作成
PHPUnitをインストールします。
composer.json
{
"require-dev": {
"phpunit/phpunit": "*"
}
}
インストール
コンテナ内でcomposer installを実行します。
$ docker-compose exec my-php-app composer install
インストール完了後にPHPUnitのバージョンを確認します。
$ docker-compose exec my-php-app vendor/bin/phpunit --version
PHPUnit 9.5.16 by Sebastian Bergmann and contributors.
ライブラリのインストールも確認できました。
動作検証
テスト用のファイルを作成し、動作検証を行います。
ディレクトリ構成
$ tree -L 1
.
├── Calculation.php # New!
├── CalculationTest.php # New!
├── Dockerfile
├── composer.json
├── composer.lock # composer installにより作成
├── docker-compose.yml
└── vendor # composer installにより作成
テスト用ファイルの作成
Calculation.php
<?php
function addition()
{
return 1 + 1;
}
CalculationTest.php
<?php
require "Calculation.php";
use PHPUnit\Framework\TestCase;
class CalculationTest extends TestCase
{
public function testAddition()
{
$this->assertSame(2, addition());
}
}
テスト実行
$ docker-compose exec my-php-app vendor/bin/phpunit CalculationTest.php
PHPUnit 9.5.16 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 00:00.131, Memory: 4.00 MB
OK (1 test, 1 assertion)
テストの実行まで確認できました。
まとめ
composerやライブラリを単体で使う機会はあまり無いと思いますが、環境を構築するための最小限の設定が理解できました。
採用PR
弊社で一緒に働く仲間を募集しています。
全てのオタクを幸せにしたい方、是非ご覧ください!