
robsontenorio/laravel提供了一种灵活的策略,通过重用相同镜像为特定容器分配角色。处理大量进程时,最佳选择是拆分为多个容器,每个容器在服务器上具有特定角色,可独立扩展。
supervisord启动为容器分配特定角色。对于JOB或ALL角色,Laravel Horizon是必需的。
| 值 | 描述 |
|---|---|
| APP(默认) | php-fpm + nginx |
| JOBS | php-fpm + horizon队列 + 调度器 |
| ALL | 一体化(包含所有服务) |
| 键 | 描述 |
|---|---|
| GITHUB_OAUTH_KEY | 用于解决GitHub速率限制问题 |
使用CONTAINER_ROLE=ALL,在同一容器中运行所有服务。
yaml# docker-compose.yml services: # nginx + php-fpm + horizon队列 + 调度器 app: image: robsontenorio/laravel environment: - CONTAINER_ROLE=ALL volumes: - .:/var/www/app ports: - 8080:8080 # 其他服务(如mysql、redis等)
将不同角色拆分到多个容器。
yaml# docker-compose.yml services: # php-fpm + nginx app: image: robsontenorio/laravel environment: - CONTAINER_ROLE=APP volumes: - .:/var/www/app ports: - 8080:8080 # php-fpm + horizon队列 + 调度器 jobs: image: robsontenorio/laravel environment: - CONTAINER_ROLE=JOBS volumes: - .:/var/www/app # 其他服务(如mysql、redis等)
适用于基于Docker的部署平台。镜像依赖/usr/local/bin/start脚本启动所有服务。
.docker/ |__ deploy.sh # 生产环境部署脚本 |__ Dockerfile # 生产环境Dockerfile |__ docker-compose.yml # 开发环境配置 app/ |__ ... # Laravel应用代码
用于在容器启动前运行额外命令。
bash#!/bin/sh set -e echo '开始部署任务...' php artisan config:cache php artisan migrate --seed --force # 其他命令... echo '部署完成!'
dockerfileFROM robsontenorio/laravel COPY . . RUN chmod a+x .docker/deploy.sh # 启动前运行部署任务 CMD ["/bin/sh", "-c", ".docker/deploy.sh && /usr/local/bin/start"]
根据部署平台设置环境变量:
CONTAINER_ROLE=APP(默认,无需设置)CONTAINER_ROLE=JOBSCONTAINER_ROLE=ALLyamlimage: robsontenorio/laravel # 所有步骤使用此镜像 stages: - build - test - deploy # 安装PHP依赖 composer: stage: build ... # 安装JS依赖 yarn: stage: build ... # PHP测试 phpunit: stage: test dependencies: - composer - yarn ... # 构建生产环境Docker镜像并推送(可选) production: stage: deploy image: docker:latest only: - tags script: - docker login <凭据> - docker build <Dockerfile路径> - docker push <镜像仓库>


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