You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose中为Appwrite添加CA证书?

解决方案:通过Docker Compose为Appwrite添加公司CA证书以解决函数构建TLS错误

核心问题分析

你的问题出在Appwrite的Serverless函数构建环境(尤其是Dart/Pub工具)未信任公司内网的CA证书,导致请求pub.dev时触发TLS验证失败。直接挂载证书但未配置系统信任及Appwrite专属环境变量,是之前尝试无效的原因。

具体Docker Compose修改方案

假设你的公司CA证书文件为company-ca.crt,已存放在Appwrite项目根目录下的./certs文件夹中,按以下方式修改docker-compose.yml:

1. 修改appwrite服务配置

services:
  appwrite:
    image: appwrite/appwrite:latest
    volumes:
      # 挂载公司CA证书到系统证书目录
      - ./certs/company-ca.crt:/usr/local/share/ca-certificates/company-ca.crt
      - ./appwrite:/usr/src/code/appwrite:rw
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      # Appwrite专属变量:将证书注入函数构建/运行容器
      - APPWRITE_FUNCTIONS_CA_CERTS=/usr/local/share/ca-certificates/company-ca.crt
      # 系统级变量:让curl、wget等工具信任证书
      - SSL_CERT_FILE=/usr/local/share/ca-certificates/company-ca.crt
      - CURL_CA_BUNDLE=/usr/local/share/ca-certificates/company-ca.crt
    # 启动时先更新系统证书信任列表,再启动Appwrite服务
    command: sh -c "chmod 644 /usr/local/share/ca-certificates/company-ca.crt && update-ca-certificates && exec supervisord -c /etc/supervisor/supervisord.conf"
    # 保留原有端口、网络等配置...

2. 修改worker服务配置(函数构建由该服务负责)

worker:
    image: appwrite/appwrite:latest
    volumes:
      - ./certs/company-ca.crt:/usr/local/share/ca-certificates/company-ca.crt
      - ./appwrite:/usr/src/code/appwrite:rw
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - APPWRITE_FUNCTIONS_CA_CERTS=/usr/local/share/ca-certificates/company-ca.crt
      - SSL_CERT_FILE=/usr/local/share/ca-certificates/company-ca.crt
      - CURL_CA_BUNDLE=/usr/local/share/ca-certificates/company-ca.crt
    # 启动时更新证书信任,再启动worker进程
    command: sh -c "chmod 644 /usr/local/share/ca-certificates/company-ca.crt && update-ca-certificates && exec php /usr/src/code/appwrite/cli.php worker:start"
    # 保留原有依赖、重启策略等配置...

关键配置说明

  • 证书挂载与权限:将证书挂载到Ubuntu系统的证书目录,并设置644权限确保系统可读取。
  • update-ca-certificates:执行该命令让系统内核信任新增的CA证书。
  • 环境变量:
    • APPWRITE_FUNCTIONS_CA_CERTS:Appwrite专属变量,会自动将指定证书注入到所有Serverless函数的构建/运行容器中,确保Pub工具能验证SSL连接。
    • SSL_CERT_FILE/CURL_CA_BUNDLE:覆盖系统默认的CA证书路径,让curl、wget等基础工具信任公司证书。

验证步骤

  1. 重启Appwrite服务:
docker-compose down && docker-compose up -d
  1. 重新触发Serverless函数的构建流程,检查是否仍出现TLS错误。

内容的提问来源于stack exchange,提问作者nb13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:13:10