尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Hi.Events 本地环境体检指南:Docker 一键启动,从报错到全绿

Hi.Events 本地环境体检指南:Docker 一键启动,从报错到全绿 Hi.Events 本地环境体检指南Docker 一键启动从报错到全绿【免费下载链接】Hi.EventsOpen-source event management and ticket selling platform — perfect for concerts, conferences, and everything in between ️ If you find this project helpful, please consider giving us a star ⭐️项目地址: https://gitcode.com/GitHub_Trending/hi/Hi.Events容器明明起来了浏览器一刷却是 502或者启动日志里滚动着 Migrations could not complete你盯着屏幕等半天也说不清卡在哪一步。搭建 Hi.Events 这种前端 后端 PostgreSQL Redis的组合最烧时间的从来不是敲命令而是猜哪个环境变量没生效。跟着这篇走一遍一条命令把环境拉起来再用几条检查命令确认全绿几秒内你心里就有底了。准备就绪跑之前先备好这几样动手前先对照下面这张表缺一样后面都会卡项目要求Docker已安装且支持docker composev2命令代码仓库已 clone 到本地端口8123 未被本机其他服务占用密钥APP_KEY、JWT_SECRET已生成并写入.env磁盘预留 5 GB 以上镜像构建 数据卷拉一份代码到本地git clone https://gitcode.com/GitHub_Trending/hi/hi.events cd hi.events/docker/all-in-oneall-in-one目录是官方提供的单容器部署方案前后端、Nginx、PHP-FPM、队列 worker 全在一个容器里适合本地验证和演示环境。跟着做完整走一遍第一步复制环境模板官方配置项都写在模板文件里cp .env.example .env第二步生成两把密钥。它们决定 Laravel 的加密与登录校验缺一不可# 第一行输出填给 APP_KEY注意保留 base64: 前缀 echo base64:$(openssl rand -base64 32) # 第二行输出填给 JWT_SECRET openssl rand -base64 32打开.env把两个值贴进去。这一步跳过容器会在启动脚本里直接中止后面全是白等。第三步一键启动docker compose up -d第四步隔十秒左右查一次状态docker compose ps正常输出长这样NAME STATUS PORTS all-in-one Up (healthy) 0.0.0.0:8123-80/tcp postgres Up (healthy) redis Up (healthy)三个服务都带 healthy说明数据库迁移脚本跑完了、Nginx 和前端进程也都活着。此时打开浏览器访问http://localhost:8123/auth/register能看到注册页环境体检就算通过了。读懂输出哪些行才是关键拿到输出后别逐字读盯这三类行就够了。ERROR: Migrations could not complete. Check the error above. Ensure DATABASE_URL is set.含义容器内的启动脚本连不上数据库或DATABASE_URL写错了。你该做的确认.env里是postgresql://postgres:secretpostgres:5432/hi-events并且 postgres 那一行的状态确实是 healthy 后再重跑docker compose up -d。all-in-one Up (restarting)含义容器在反复重启通常是某个子进程Nginx、PHP-FPM 或 Node 前端起不来。你该做的跑docker compose logs --tail 100 all-in-one翻到第一处报错八成是端口或密钥问题。all-in-one Up (healthy)含义全绿。Nginx、PHP-FPM、Node 前端、队列 worker 都在容器内被 supervisord 托管并存活可以放心继续配 Stripe、邮件这些业务参数。踩坑现场场景一迁移直接中止。Aborting startup to avoid running a half-migrated application.原因数据库还没 ready 时后端就执行了迁移或DATABASE_URL指到了宿主机而不是容器网络。修复确认.env中DATABASE_URL的 host 是postgres容器服务名然后执行docker compose up -d --force-recreate all-in-one场景二绑定端口失败。Bind for 0.0.0.0:8123 failed: port is already allocated原因本机 8123 被别的进程占着。修复lsof -i :8123找到占用者停掉或改docker-compose.yml里的端口映射为8124:80后重启。场景三页面 500日志提示没有加密密钥。RuntimeException: No application encryption key has been specified.原因APP_KEY留空或忘了base64:前缀。修复重新生成一次前缀必须带上改完执行docker compose up -d --force-recreate。场景四注册页打不开但ps显示 healthy。原因VITE_API_URL_CLIENT指到的地址和浏览器实际访问的域名对不上前端调 API 跨域失败。修复把.env里的VITE_FRONTEND_URL、VITE_API_URL_CLIENT统一改成http://localhost:8123开头重建容器让环境变量重新注入。进阶让它自动跑CI 预检在流水线里先只做配置校验变量写错时立刻失败不用等镜像构建完# .gitlab-ci.yml 片段 check-env: script: - cd docker/all-in-one - docker compose config -q一键体检脚本把状态检查固化成脚本部署后自动跑#!/bin/bash # hi-events-check.sh三秒确认环境是否全绿 cd $(dirname $0)/docker/all-in-one docker compose ps | grep -v Up (healthy) { echo 存在异常容器; exit 1; } curl -sf http://localhost:8123/auth/register /dev/null || { echo 注册页不可达; exit 1; } echo Hi.Events 环境体检通过多环境切换本地、测试、演示各用一份.env用--env-file指定docker compose --env-file .env.staging up -d幕后一眼想看它怎么自检直接读 docker/all-in-one/scripts/startup.sh先跑迁移、清缓存、建 storage 软链失败就中止启动容器内的 Nginx、PHP-FPM、Node、队列 worker 都由 docker/all-in-one/supervisor/supervisord.conf 托管外加restart: unless-stopped兜底。开跑前自检清单APP_KEY与JWT_SECRET已生成并填入.envDATABASE_URL指向容器服务名postgresdocker compose ps三个服务均为 healthy注册页可访问且能提交表单Stripe、邮件等可选配置留空也能正常启动跑通这一条后面改配置、接支付你心里就有底了——先让环境绿着再谈业务的事。【免费下载链接】Hi.EventsOpen-source event management and ticket selling platform — perfect for concerts, conferences, and everything in between ️ If you find this project helpful, please consider giving us a star ⭐️项目地址: https://gitcode.com/GitHub_Trending/hi/Hi.Events创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表