Docker를 사용하여 PHPUnit 실행 환경을 쉽게 구성할 수 있습니다!
개시하다
나는 PHP 단일체로 테스트 코드를 연습하고 싶어서 신속하게 Docker로 PHPUnit의 실행 환경을 만들었다.
Docker를 배우고 있으니 프로그램 등을 정리해 봅시다.
※ 질문이 있으면 지적하세요!
소스 여기 있어요.
디렉토리 구조
테스트 대상과 테스트 코드는 src 아래에 배치됩니다.
PHPUnit만 시도하고 싶은 사람은 위의 github에서 소스를 구하세요.
├─ src/
│ ├─ tests/FunctionTest.php // テストコード
│ └─ function.php // テスト対象
├─ Dockerfile
└─docker-compose.yml
Docker를 통한 PHPUnit 환경 구축
Docker Hub로 이미지 선택
기본적으로 다음 두 가지 모델 중에서 선택한다.
PHP 공식 이미지에 PHPUnit(composier 등 사용)
2 비교적 간단하지만 예를 들어 기록된 phpuniit/phpuniit의 이미지 업데이트가 비교적 낡고 PHP7 시스템과 PHPUnit의 버전도 비교적 낡기 때문에 실제 프로젝트에서 사용할 수 없을 가능성이 높다.주의하십시오.
이번에는 PHP의 실행 환경에 Compooser PHPUnit 모드 1을 추가해 보려고 합니다.
PHP의 공식 이미지 참조 확인
이미지 선택
PHP의 공식 인상에는 또 다른 종류가 있으니 확인해 주세요.
Image Variants의 장을 확인한 후 다음 종류를 확인할 수 있습니다.
웹 서버가 포장된 인상도 있다.
이번에는 테스트
php:<version>-cli
만 진행한다.버전 선택
PHP 공식 이미지의 Tags에서 의도 이미지를 찾습니다.
이번에는
php:8.0-cli
를 사용해야 하기 때문에 먼저 검색해서 있는지 확인해 보세요.찾으면 기본 인상으로 Docker file을 쓰세요.
Docker file 만들기
나는 Docker file을 만드는 몇 가지 방법이 있다고 생각한다.
예를 들어 아래의 느낌.
① 이미지에 composier를 포함하고 용기에 phpunit를 넣습니다.phpunit도 용기 내나 외부에서 실행됩니다.
②제작
docker-entrypoint.sh
[1],phpunit를 설치하거나 실행할 수도 있다.② 더 스마트한 것 같지만 이번에는 ①모드로 컨테이너에 phpunit와 phpunit를 설치하고 싶다.
FROM php:8.0-cli
zip
및 unzip
.RUN apt-get update && apt-get install -y \
zip \
unzip
Docker17.05 이상의 경우 다중 무대 구조를 가져왔습니다. 여기에 기재된 명령을 통해 Composier를 이미지에 포함할 수 있습니다.
매우 편리합니다.
※ 다단계 구축에 대해서는 다른 기사를 참고하세요.
우리의 이미지의 목적은 호스트에 PHP가 설치되어 있지 않아도 Compooser를 신속하게 실행할 수 있도록 하는 것이다.컨테이너 내의 PHP 버전에 의존하지 마십시오.Composier를 기본 이미지나 공식 이미지로 사용하는 것을 권장하지 않기 때문에 지원하는 PHP 버전마다 Composier 이미지를 제공하지 않습니다.
권장 사항:
(최고) 자체 구축 이미지를 만들고 Composier를 설치합니다.
주: Docker 170.05는 다무대 건축을 도입하여 이것을 크게 간소화시켰다.
COPY --from=composer /usr/bin/composer /usr/bin/composer
DockerfileCOPY /usr/bin/composer /usr/bin/composer
WORKDIR /app
지금까지 Docker file의 완성이었습니다.결국 이런 느낌이야.
Dockerfile
FROM php:8.0-cli
RUN apt-get update && apt-get install -y \
zip \
unzip
COPY /usr/bin/composer /usr/bin/composer
WORKDIR /app
docker-compose.yml 만들기
※ 하지만 최신 버전인 Docker Compose V2는 필요 없을 것 같습니다.
상세한 상황은 이곳의 보도를 참고하세요. 제가 소개하겠습니다.
docker-compose.yml
version: '3.9'
용기에서 테스트를 실행할 수 있도록 테스트 원본을 마운트합니다.
컨테이너에 넣을 tty를 설정합니다.
docker-compose.yml
services: # 各コンテナを定義
php: # サービス名
build: ./ # 構築時のオプションを指定、今回はDockerfileの場所
container_name: phpunit # 任意のコンテナ名を設定
tty: true # コンテナを起動し続ける
volumes:
- type: bind # バインドマウントをする(ホストとコンテナを同期)
source: ./ # マウントするソースの場所(ホスト)
target: /app # マウント先の場所
PHPUnit 설치 및 실행, 제거
터미널에서 Docker file이 있는 작업 디렉토리로 이동하여 명령을 실행합니다.
컨테이너 구축, 시작
백그라운드에서 운행하다.
용기가 시작되고 있는지 확인하십시오.
$ docker compose up -d
컨테이너에 들어가다
컨테이너에 들어가서 Composter를 확인하세요.
$ docker container exec -it phpunit bash
// コンテナ内
~:/app# composer -V
Composer version 2.3.5 ~
Composter로 PHPUnit 설치
~:/app# composer require --dev phpunit/phpunit
composer.호스트 측에서도 json이나vender 파일을 만들 수 있습니다.composer.json
{
"require-dev": {
"phpunit/phpunit": "^9.5"
}
}
PHPUnit 실행
PHPUnit의 실행 가능 여부를 확인합니다.
내 github 소스를 사용하면 한 번 실패할 거야.
~:/app# vendor/bin/phpunit src/tests --testdox
PHPUnit 9.5.20 #StandWithUkraine
Function
✔ Morning
✘ Evening
│
│ Failed asserting that two strings are identical.
│ --- Expected
│ +++ Actual
│ @@ @@
│ -'hello!'
│ +'good evening!'
│
│ /app/src/tests/FunctionTest.php:17
│
✔ Hello
Time: 00:00.311, Memory: 6.00 MB
Summary of non-successful tests:
Function
✘ Evening
│
│ Failed asserting that two strings are identical.
│ --- Expected
│ +++ Actual
│ @@ @@
│ -'hello!'
│ +'good evening!'
│
│ /app/src/tests/FunctionTest.php:17
│
FAILURES!
Tests: 3, Assertions: 3, Failures: 1.
컨테이너 중지/삭제
PHPUnit만 수행하는 컨테이너이기 때문에.
사용이 끝난 후 삭제합니다. 사용하고자 할 때 실행합니다.
~:/app# exit
// コンテナの停止・削除
$ docker compose down
끝맺다
왜냐하면 실제 작업에서 Docker를 거의 사용하지 않았어요.
이것만 해도 힘들어요.
기본적인 걸 이해했으니까 개인적으로 잘 쓰고 싶어요!
각주
컨테이너가 시작될 때 ENTRYPOINT에서 하우징을 실행할 수 있는 도우미 스크립트입니다.처음 시작할 때 명령을 실행하고 싶을 때만 사용합니다.↩︎
Reference
이 문제에 관하여(Docker를 사용하여 PHPUnit 실행 환경을 쉽게 구성할 수 있습니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/shun57/articles/4b2cbf33255de4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)