Laravel Docker 镜像
生产就绪的PHP/Laravel Docker镜像,具备自动Laravel安装功能,支持通过环境变量配置PHP和PHP-FPM,无需重建镜像即可调整设置,包含最新Composer,提供Debian和Alpine版本,方便快速启动项目。
shinsenter/laravel 镜像文档
概述
生产就绪的PHP/Laravel Docker镜像,具备自动Laravel安装功能。支持通过环境变量轻松配置PHP和PHP-FPM设置,无需重建镜像即可调整配置。包含最新版本的Composer,方便快速启动项目。提供Debian和Alpine两种版本。
- Docker Hub: https://hub.docker.com/r/shinsenter/laravel
- GitHub Packages: https://code.shin.company/php/pkgs/container/laravel
- 还可查看 https://hub.docker.com/u/shinsenter。
核心功能与特性
- 自动Laravel安装:挂载空目录到容器时,自动下载框架源代码,快速初始化新项目
- 环境变量配置:通过环境变量配置PHP和PHP-FPM,无需修改Dockerfile或重建镜像
- 内置Composer:包含最新Composer,方便项目依赖管理和安装
- 多版本支持:提供Debian和Alpine两种基础镜像版本,满足不同需求
- HTTPS支持:内置SSL测试证书,支持替换为自定义证书以实现生产环境HTTPS
- 服务控制:通过环境变量启用Laravel队列worker、调度器、Horizon等服务
使用场景
- 快速创建新的Laravel项目,自动完成框架代码初始化
- 部署现有Laravel项目到生产环境,简化配置流程
- 需要灵活调整PHP配置的场景,避免频繁重建镜像
- 生产环境中需要HTTPS加密的部署场景
- 需要控制Laravel服务(如队列处理、定时任务)的应用场景
使用方法
创建新项目
当将空目录挂载到容器时,容器会自动下载Laravel框架源代码,快速引导新项目。
操作步骤
- 在主机创建空目录用于存放项目代码:
shellmkdir laravel
- 运行容器并将空目录挂载为卷:
shelldocker run -p 80:80 -p 443:443 -p 443:443/udp \ -v ./laravel:/var/www/html \ docker.xuanyuan.run/shinsenter/laravel:latest
容器会检测到挂载到/var/www/html的空目录,并自动克隆Laravel框架源代码到该目录。
使用现有项目
将主机上的现有Laravel项目目录挂载到容器的/var/www/html目录即可。由于源代码以卷的形式挂载,主机上的修改会实时反映到容器中,方便在容器内运行构建、测试等任务。
HTTPS配置
镜像包含预生成的SSL证书用于本地测试。生产环境中需替换为有效的SSL证书,可通过以下方式实现:
使用Dockerfile
DockerfileFROM docker.xuanyuan.run/shinsenter/laravel:latest # 复制自定义证书到容器 COPY my_domain.crt /etc/ssl/site/server.crt COPY my_domain.key /etc/ssl/site/server.key # 添加自定义指令,例如: # ADD --chown=$APP_USER:$APP_GROUP ./laravel/ /var/www/html/
使用docker run
shelldocker run -p 80:80 -p 443:443 -p 443:443/udp \ -v ./laravel:/var/www/html \ -v ./my_domain.crt:/etc/ssl/site/server.crt \ -v ./my_domain.key:/etc/ssl/site/server.key \ docker.xuanyuan.run/shinsenter/laravel:latest
使用docker-compose
yamlservices: web: image: docker.xuanyuan.run/shinsenter/laravel:latest volumes: - ./laravel:/var/www/html - ./my_domain.crt:/etc/ssl/site/server.crt - ./my_domain.key:/etc/ssl/site/server.key
环境变量
可通过设置以下环境变量来启用容器中与Web服务器一起运行的特定服务。
📝 注意:对于Laravel Pulse、Laravel Horizon或Laravel Reverb等功能,需要自行安装所需包并创建必要的配置。
| 环境变量 | 描述 |
|---|---|
LARAVEL_AUTO_MIGRATION | 应用启动时是否自动运行数据库迁移。设为0禁用迁移。默认值为1。 |
LARAVEL_AUTO_MIGRATION_OPTIONS | 传递给artisan migrate命令的额外选项/标志(例如--seed)。 |
LARAVEL_ENABLE_QUEUE_WORKER | 启用Laravel队列worker的supervisor服务。设为1开始处理任务。默认值为0。 |
LARAVEL_QUEUE_WORKER_OPTIONS | 定义Laravel队列worker的自定义选项(例如连接、延迟)。 |
LARAVEL_ENABLE_SCHEDULER | 启用Laravel调度器的supervisor服务。设为0禁用定时任务。默认值为1。 |
LARAVEL_SCHEDULER_OPTIONS | 指定调度器执行的额外选项。 |
LARAVEL_ENABLE_HORIZON | 启用Laravel Horizon的supervisor服务(队列管理仪表板)。默认值为0。 |
LARAVEL_HORIZON_OPTIONS | Laravel Horizon的自定义选项(例如环境、队列名称)。 |
LARAVEL_ENABLE_PULSE | 启用Laravel Pulse的supervisor服务(应用性能监控)。默认值为0。 |
LARAVEL_PULSE_OPTIONS | Laravel Pulse的配置选项(例如端口、存储)。 |
LARAVEL_ENABLE_REVERB | 启用Laravel Reverb的supervisor服务(实时WebSocket通信)。默认值为0。 |
LARAVEL_REVERB_OPTIONS | Laravel Reverb的配置选项(例如端口、存储)。 |
稳定镜像标签
https://code.shin.company/php的发布版本不保证从相同源代码构建的Docker镜像始终完全一致。我们每天构建新的Docker镜像,以确保其包含PHP、基础操作系统、Composer等的最新上游更新,相同标签的镜像会定期更新。
若需使用稳定版本,可拉取shinsenter/laravel:latest镜像并标记为稳定版本(如your-repo/laravel:stable),命令如下:
shelldocker pull docker.xuanyuan.run/shinsenter/laravel:latest docker tag shinsenter/laravel:latest your-repo/laravel:stable docker push your-repo/laravel:stable
然后使用your-repo/laravel:stable作为基础镜像构建生产环境容器。
贡献
如果您觉得这些镜像有用,可通过***,或在https://code.shin.company/php/issues/new提交issue。您的支持有助于维护和改进这些社区镜像。
许可协议
本项目基于https://code.shin.company/php/blob/main/LICENSE许可。感谢您认可本项目背后的智力成果,如使用或借鉴本项目的任何想法,敬请给予适当的署名。
来自越南 🇻🇳 的爱。
shinsenter 命名空间的其他可用镜像:
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
轩辕镜像加速拉取命令点我查看更多 laravel 镜像标签
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务