LoginSignup
6
7

More than 1 year has passed since last update.

【Docker】最小限の構成でcomposer実行環境を作る

Last updated at Posted at 2022-03-07

ライブラリ単体でちょっとした動作確認を行いたい時に便利です。
最小限の構成のため、コードを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の作成

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

弊社で一緒に働く仲間を募集しています。
全てのオタクを幸せにしたい方、是非ご覧ください!

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7