本项目提供基于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许可证开源,详情参见许可证文件。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429