资讯动态

Cal.diy 如何从源码构建自己的 Docker 镜像并启动实例

发布时间:2026/9/10 20:22:56 来源:尧图企业网站定制
Cal.diy 如何从源码构建自己的 Docker 镜像并启动实例【免费下载链接】cal.diyScheduling infrastructure for absolutely everyone.项目地址: https://gitcode.com/GitHub_Trending/ca/cal.diy不想直接使用预构建镜像、需要修改构建时变量如NEXT_PUBLIC_WEBAPP_URL、条款/隐私政策 URL、遥测开关或希望完全控制构建过程时可以用仓库自带的 Dockerfile 从源码构建 Cal.diy 镜像再用 docker compose 启动实例。本流程整理自 README.md 的 “Building from source with Docker” 章节与 apps/docs/content/docker.mdx 保持一致。完成操作后浏览器访问http://localhost:3000或你配置的NEXT_PUBLIC_WEBAPP_URL即可看到首次启动的初始化向导定义第一个用户后实例即可使用。前提是服务器已安装docker和docker compose不带连字符的写法Docker Desktop 与 Rancher Desktop 通常两者都包含。准备源码与 .env 配置克隆仓库并进入目录git clone https://github.com/calcom/cal.diy.git cd cal.diy复制环境变量模板cp .env.example .env.env.example里的大部分配置可以保持原样但源码构建路径下至少需要确认以下几项NEXTAUTH_SECRETCookie 加密密钥用openssl rand -base64 32生成。CALENDSO_ENCRYPTION_KEY加密密钥AES256 要求 32 字节用openssl rand -base64 24生成。 这两项在运行时表格中标注 “Must match build variable”即构建时与运行时的取值必须一致生产环境使用默认占位值secret是安全风险必须替换。DATABASE_URL构建过程与运行时都需要一个可用数据库。注意.env.example中的默认值postgresql://postgres:localhost:5450/calendso面向本地开发使用 compose 内置 database 服务时应改为 README 表格给出的默认值postgresql://unicorn_user:magical_passworddatabase:5432/calendso。NEXT_PUBLIC_WEBAPP_URL可选站点基础 URL构建时注入静态文件默认http://localhost:3000。README 说明若运行时的值与构建时不同容器启动时会重新替换静态文件中的值启动会略有延迟。CALCOM_TELEMETRY_DISABLED可选设为1可关闭匿名使用数据采集。MAX_OLD_SPACE_SIZEREADME 表格将其列为构建时必需变量、默认 4096当前 docker-compose.yml 的 build args 并未传递该项此时以 Dockerfile 中ARG MAX_OLD_SPACE_SIZE6144的默认值为准。另有一个容易忽略的点compose 中 calcom 服务的运行时DATABASE_URL是由${POSTGRES_USER}、${POSTGRES_PASSWORD}、${DATABASE_HOST}、${POSTGRES_DB}这几个变量拼出来的而 database 服务固定以用户unicorn_user、密码magical_password、数据库名calendso初始化 Postgres见 docker-compose.yml。使用内置数据库时在.env中补齐这些变量让构建参数与运行时拼装结果指向同一个库# docker-compose.yml 中 database 服务初始化的账号/密码/库名 POSTGRES_USERunicorn_user POSTGRES_PASSWORDmagical_password POSTGRES_DBcalendso # 数据库所在主机即 compose 中的服务名 DATABASE_HOSTdatabase # 构建时参数指向同一个数据库 DATABASE_URLpostgresql://unicorn_user:magical_passworddatabase:5432/calendso # 分别用 openssl rand -base64 32 / 24 生成 NEXTAUTH_SECRET你生成的值 CALENDSO_ENCRYPTION_KEY你生成的值 NEXT_PUBLIC_WEBAPP_URLhttp://localhost:3000 CALCOM_TELEMETRY_DISABLED1代码块中的...为占位符替换为你用 openssl 生成的实际值。先启动构建所需数据库README 明确指出出于应用配置要求构建过程当前需要一个可用数据库。两条分支部署环境已有数据库把.env中DATABASE_URL指向它跳过本步。需要本地或临时数据库只启动 compose 中的 database 服务docker compose up -d database该命令只启动名为database的 Postgres 容器并挂载database-data卷数据持久化在该卷中。构建镜像在仓库根目录执行DOCKER_BUILDKIT0 docker compose build calcom说明README 要求命令必须带DOCKER_BUILDKIT0前缀目的是允许构建期使用网络桥接文档注明该要求将来会移除。compose 中 calcom 服务的 build 配置为context: .、dockerfile: Dockerfilebuild args 从.env读取DATABASE_URL、NEXTAUTH_SECRET、CALENDSO_ENCRYPTION_KEY、NEXT_PUBLIC_WEBAPP_URL等值。Dockerfile 为多阶段构建最终 runner 阶段暴露 3000 端口以scripts/start.sh作为启动命令并内置健康检查每 30 秒用wget --spider http://localhost:3000探测超时 30 秒、重试 5 次。启动实例按数据库情况选择# 完整栈本地 Postgres 数据库 Cal.diy 网页应用 Prisma Studio docker compose up -d # 网页应用 Prisma Studio使用外部数据库DATABASE_URL 须指向可用数据库 docker compose up -d calcom studio # 只启动网页应用使用外部数据库 docker compose up -d calcom需要查看日志排查问题时去掉-d以附加模式运行。另请注意当前 docker-compose.yml 还定义了redis和calcom-apiAPI v2两个服务直接docker compose up -d会把文件中的所有服务都启动起来。验证结果浏览器打开http://localhost:3000或你配置的NEXT_PUBLIC_WEBAPP_URL。首次运行会进入初始化向导定义第一个用户后即可以使用。若向导中出现 “Connect your Calendar” 步骤且暂时不想连接日历可直接访问NEXT_PUBLIC_WEBAPP_URL/event-types跳过日历集成之后可在 Settings Integrations 页面添加。终端执行docker compose ps查看容器状态。Cal.diy 镜像内置健康检查30 秒间隔执行wget --spider http://localhost:3000重试 5 次服务不可达时容器状态会被标为不健康。常见问题与限制CLIENT_FETCH_ERROR容器日志出现[next-auth][error][CLIENT_FETCH_ERROR]文档示例为getaddrinfo ENOTFOUND testing.localhost。文档解释是服务端默认 Auth 回调用 WEBAPP_URL 作为基础地址而容器未必能解析本地机器上的域名。可尝试配置NEXTAUTH_URLhttp://localhost:3000/api/auth让后端回指自身。Failed to commit changes: Invalid prisma.user.create()某些版本在metadata字段为空时创建用户会失败将该字段置为空 JSON 对象{}可解决id字段自增也可尝试留空。SSL 边缘终结若部署在负责 SSL 证书的负载均衡器之后README 要求添加环境变量NODE_TLS_REJECT_UNAUTHORIZED0防止请求被拒绝同时明确警告只有在你清楚自己在做什么、并信任转发流量的服务/负载均衡器时才能这样做。构建时变量的约束NEXT_PUBLIC_WEBAPP_URL、条款/隐私政策 URL、遥测等构建时变量在构建阶段固化进镜像README 与 Docker 文档均说明如需修改这些变量必须按本文流程自行构建镜像不能在运行时通过改环境变量替代。适用范围README 开头提示Cal.diy 是社区自托管版本严格建议仅用于个人、非生产用途。【免费下载链接】cal.diyScheduling infrastructure for absolutely everyone.项目地址: https://gitcode.com/GitHub_Trending/ca/cal.diy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价