downworld / laravel-devops
Laravel Cloudflare-Tunnels Ready Production Docker-Compose
v0.7.6
2024-02-02 18:55 UTC
Requires
- php: >=7.4
- hedii/laravel-gelf-logger: *
- laravel/framework: ^8.0|^9.0|^10.0
- spatie/laravel-backup: ^8.5
README
安装
composer require "downtoworld/laravel-devops:*"
发布必需的文件
php artisan vendor:publish --tag=laravel-devops
使用Portainer和Cloudflare Tunnels的示例
- 创建Docker网络
cloudflared
(桥接模式) - 按照Cloudflare -> Zero Trust -> Access -> Tunnels的指定部署Docker容器(另外:通过指定
--network cloudflared
将容器附加到之前创建的网络) - 在Portainer WebUI创建基于Git的仓库
- 在Compose路径指定:
docker-compose-prod.yml
- 启用GitOps更新
- 填写必需的环境变量
APP_NAME
:几个Laravel配置使用它作为前缀APP_KEY
:可以在本地环境中生成APP_DOMAIN
:生产环境中应用的域名,例如:yourdomain.comAPP_DOCKER_STACK
:在Portainer中配置的堆栈名称。例如:mystack- [您还可以在此配置Laravel环境变量,如
APP_NAME
或APP_DEBUG
]
- 部署堆栈
- 在Compose路径指定:
- 在Cloudflare中将公共主机名添加到隧道中
- Web页面(Nginx):yourdomain.com HTTP mystack-nginx-1:80
- S3存储(Minio):cdn.yourdomain.com HTTP mystack-minio-1:9000
- WebSocket服务器(Soketi):ws.yourdomain.com HTTPS(启用tls-check-disabled和ws-enabled选项)mystack-soketi-1:6001
本地访问私有服务(MySQL、Redis等)
- 运行
docker run -d --name cloudflare-docker-dns --restart always --network cloudflared -e DNS_FORWARDER=127.0.0.11 cytopia/bind
,并从Portainer UI复制其分配的IP(your-assigned-ip)。 - 转到Portainer网络并复制
cloudflared
分配的IPV4 IPAM子网(your-network-ip-range)。 - 转到Cloudflare -> Zero Trust -> Access -> Tunnels,并在您的隧道中配置一个新的
私有网络
,CIDR:your-network-ip-range。 - 转到Cloudflare Zero Trust设置 -> WARP客户端 -> 配置“默认”设备设置
- 添加本地域名回退:
domain
: cloudflaredDNS服务器
: your-assigned-ip - 将分隧道设置为
包含IP和域名
,并添加选择器
:IP地址值
:your-network-ip-range
- 添加本地域名回退:
- 在Cloudflare Zero Trust设置 -> WARP客户端 -> 设备注册权限中提供您的电子邮件访问权限。
- 在您的计算机上安装Cloudflare WARP,连接到您的Zero Trust组织并启用它。
- 现在您可以以
mystack-service-1.cloudflared:port
的形式本地访问所有云flared-network连接的Docker容器。
您可以访问的服务列表
- mystack-mysql-1.cloudflared:3306
用户
:root密码
:secret - mystack-redis-1.cloudflared:6379 无密码
- http://mystack-seq-1.cloudflared
- http://mystack-minio-1.cloudflared:8900
- http://mystack-mailpit-1.cloudflared:8025
- http://mystack-meilisearch-1.cloudflared:7700
环境变量
应用程序环境变量可以在docker-compose-prod.env
文件中管理。
队列和调度器
调度器和Horizon监督器在各自的容器中独立运行。
PHP版本、扩展和INI文件
默认运行8.2版本,但可以通过使用环境变量APP_PHP_VERSION
切换到8.1
或7.4
。
感谢
- 感谢 Cloudflare 团队免费使我们能够实现这一目标。
- Portainer 项目通过其 GitOps 更新使其成为可能。
- ServerSideUp 团队通过其 PHP Docker 镜像使其成为可能。