downworld/laravel-devops

Laravel Cloudflare-Tunnels Ready Production Docker-Compose

v0.7.6 2024-02-02 18:55 UTC

This package is auto-updated.

Last update: 2024-09-12 10:49:51 UTC


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.com
      • APP_DOCKER_STACK:在Portainer中配置的堆栈名称。例如:mystack
      • [您还可以在此配置Laravel环境变量,如APP_NAMEAPP_DEBUG]
    • 部署堆栈
  • 在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: cloudflared DNS服务器: 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.17.4

感谢

  • 感谢 Cloudflare 团队免费使我们能够实现这一目标。
  • Portainer 项目通过其 GitOps 更新使其成为可能。
  • ServerSideUp 团队通过其 PHP Docker 镜像使其成为可能。