wayofdev/php-dev本项目提供基于wayofdev/docker-php-base构建的PHP开发环境Docker镜像,旨在为本地开发提供便捷、功能丰富的解决方案,可作为Laravel Sail的替代方案使用。
在基础镜像提供的扩展之上,本开发镜像额外包含以下扩展:
| 扩展名称 | 描述 | 类型 |
|---|---|---|
| xdebug | PHP调试扩展 | pecl |
| 工具名称 | 类型 | 说明 |
|---|---|---|
| git | apk | 版本控制系统 |
| bash | apk | Bourne-Again Shell |
| unzip | apk | 压缩文件解压工具 |
| nano | apk | 轻量级文本编辑器 |
| libfaketime | apk | 用户空间时间伪造库,用于测试时间逻辑 |
| wait4x | apk | 服务就绪检查工具,支持TCP/HTTP等协议 |
| composer | bin | PHP依赖管理工具 |
本镜像适用于以下开发场景:
使用docker pull命令拉取指定版本镜像:
bashdocker pull wayofdev/php-dev:8.3-fpm-alpine-latest
标签格式说明:{PHP版本}-{类型}-{系统}-{版本},例如8.3-fpm-alpine-latest表示:
cli:仅包含PHP命令行解释器fpm:包含PHP-FPM进程管理器supervisord:集成Supervisord进程管理工具bash# PHP 8.1 CLI版本 docker pull wayofdev/php-dev:8.1-cli-alpine-latest # PHP 8.2 FPM版本 docker pull wayofdev/php-dev:8.2-fpm-alpine-latest # PHP 8.3 Supervisord版本 docker pull wayofdev/php-dev:8.3-supervisord-alpine-latest
以下是Laravel项目的完整Docker Compose配置示例,包含PHP应用服务与Nginx Web服务:
yamlservices: app: image: wayofdev/php-dev:8.3-fpm-alpine-latest container_name: ${COMPOSE_PROJECT_NAME}-app restart: on-failure # 失败时自动重启 networks: - default - shared depends_on: - database # 依赖数据库服务启动 links: - database volumes: - ./.github/assets:/assets:rw,cached # 静态资源目录 - ./app:/app:rw,cached # 应用代码目录(rw表示读写,cached优化性能) - ./.env:/app/.env # 环境变量文件挂载 - ~/.composer:/.composer # Composer缓存目录(加速依赖安装) - ~/.ssh:/home/www-data/.ssh:ro # SSH密钥目录(只读权限) environment: FAKETIME: '+2h' # 设置伪造时间(如提前2小时),用于测试时间逻辑 XDEBUG_MODE: '${XDEBUG_MODE:-off}' # Xdebug模式,默认关闭 PHIVE_HOME: /app/.phive # Phive工具的家目录 dns: - 8.8.8.8 # 配置Google DNS extra_hosts: - 'host.docker.internal:host-gateway' # 允许容器访问宿主机服务 web: image: wayofdev/nginx:k8s-alpine-latest # 配套Nginx镜像 container_name: ${COMPOSE_PROJECT_NAME}-web restart: on-failure networks: - default - shared depends_on: - app # 依赖PHP服务启动 links: - app volumes: - ./app:/app:rw,cached # 共享应用代码目录 - ./.env:/app/.env # 共享环境变量文件 labels: # Traefik反向代理配置 - traefik.enable=true - traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.rule=Host(`api.${COMPOSE_PROJECT_NAME}.docker`) - traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.entrypoints=websecure - traefik.http.routers.api-${COMPOSE_PROJECT_NAME}-secure.tls=true - traefik.http.services.api-${COMPOSE_PROJECT_NAME}-secure.load***.server.port=8880 - traefik.docker.network=network.${SHARED_SERVICES_NAMESPACE}
| 环境变量 | 描述 | 默认值 | 可选值 |
|---|---|---|---|
| FAKETIME | 通过libfaketime设置进程时间,格式支持+2h(相对时间)或2024-01-01(绝对时间) | 未设置 | 时间字符串(如+30m、2023-12-31 23:59) |
| XDEBUG_MODE | Xdebug运行模式控制 | off | off/debug/develop/coverage/trace |
| PHIVE_HOME | Phive(PHP依赖管理工具)的配置存储目录 | /app/.phive | 绝对路径 |
如需构建或修改本镜像,需满足以下依赖:
bashgit clone ***:wayofdev/docker-php-dev.git && \ cd docker-php-dev
使用Ansible从Jinja2模板生成目标Dockerfile:
bashmake generate
构建默认镜像(由IMAGE_TEMPLATE变量指定,默认8.3-fpm-alpine):
bashmake build
构建指定镜像:
bashmake build IMAGE_TEMPLATE="8.3-fpm-alpine"
构建所有变体:
bash# PHP 8.1系列 make build IMAGE_TEMPLATE="8.1-cli-alpine" make build IMAGE_TEMPLATE="8.1-fpm-alpine" make build IMAGE_TEMPLATE="8.1-supervisord-alpine" # PHP 8.2系列 make build IMAGE_TEMPLATE="8.2-cli-alpine" make build IMAGE_TEMPLATE="8.2-fpm-alpine" make build IMAGE_TEMPLATE="8.2-supervisord-alpine" # PHP 8.3系列 make build IMAGE_TEMPLATE="8.3-cli-alpine" make build IMAGE_TEMPLATE="8.3-fpm-alpine" make build IMAGE_TEMPLATE="8.3-supervisord-alpine" # PHP 8.4系列 make build IMAGE_TEMPLATE="8.4-cli-alpine" make build IMAGE_TEMPLATE="8.4-fpm-alpine" make build IMAGE_TEMPLATE="8.4-supervisord-alpine"
使用make test命令执行镜像验证测试:
测试默认镜像:
bashmake test
测试指定镜像:
bashmake test IMAGE_TEMPLATE="8.3-fpm-alpine"
测试用例通过goss.yaml文件定义(针对每个镜像变体生成),包含以下验证项:
本项目遵循安全策略,包含漏洞披露流程和响应机制。
欢迎参与贡献!可通过以下方式参与:
本项目基于MIT许可证开源,详情参见许可证文件。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务