php(2 部分系列)
1我用 50 行代碼寫了 twig2php的活動框架
Docker-compose.yml
此配置僅包含一個服務并公開一個端口以通過瀏覽器訪問容器。這個文件就不用多說了。
version: '3.7' services: server: build: context: ./docker/server/ volumes: - ./:/var/www/html ports: - "8888:80"
/docker/server/Dockerfile
以前的文件需要 /docker/server/ 文件夾中的 Dockerfile。Docker 文件在這里。這是一個已經安裝了 Apache 的 php 圖像。此 Dockerfile 包括使用 php 和 zdebug 的最低要求。git 和 zip 必須與 composer 一起工作。實際上 zip 不是強制性的,.. 但是 composer 可以在安裝時下載壓縮的存儲庫。
FROM php:8.1-apache COPY 000-default.conf /etc/apache2/sites-available/000-default.conf COPY ./ /var/www/html COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer RUN apt-get update && apt-get upgrade && apt-get install -y git zip RUN pecl install xdebug && docker-php-ext-enable xdebug
/docker/server/000-deafult.conf
這是一個非常簡單的虛擬主機。
ServerAdmin webmaster@localhost DocumentRoot /var/www/html/public ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined
composer.json
這個 composer.json 文件包含啟動測試驅動開發的 phpunit 和兩個基本配置。
首先,聲明了 bin 文件夾,這樣我們就可以運行 ./bin/command 而不是 ./vendor/bin/command。
第二個 psr-4 配置為文件自動加載。
第三,phpunit 安裝在開發環境中。
{ "config": { "bin-dir": "bin" }, "autoload": { "psr-4": { "": ["src/"] } }, "require-dev": { "phpunit/phpunit": "^9.5" } }
Makefile
在我工作的每個項目中,都有一個 Makefile。此文件中的主要目標是
- 覆蓋率,用于代碼覆蓋率
- 重建、停止、擦除和重新啟動容器
- 作曲家,從主機運行作曲家
php := server docker := docker-compose compose := $(docker) --file docker-compose.yml docker_exec := $(compose) exec args = $(filter-out $@,$(MAKECMDGOALS)) up: $(docker) up -d bash: $(docker_exec) $(php) bash test: $(docker_exec) $(php) bash -c "./bin/phpunit --testdox --color" coverage: $(docker_exec) $(php) bash -c "php -dxdebug.mode=coverage ./bin/phpunit --testdox --color --coverage-html coverage" .PHONY: coverage stop: $(docker) stop rm: $(docker) rm $(php) --force build: $(docker) up -d --build rebuild: stop rm build composer: $(docker_exec) $(php) composer $(args)