AWS部署Appwrite 0.14.2.305修改_APP_DOMAIN等环境变量不生效
Appwrite 0.14.2.305 AWS Marketplace部署版环境变量不生效排查方案
按以下顺序逐点排查,绝大多数同类问题都是配置路径/重载方式错误导致的:
- 首先确认你修改的是正确的
.env配置文件
AWS Marketplace提供的预构建Appwrite镜像默认安装路径为/opt/appwrite/,和官方手动部署文档里默认的~/appwrite路径不一致,如果你之前在root用户家目录、其他自定义路径下找.env修改,配置完全不会被加载。你需要修改的是/opt/appwrite/.env文件内的_APP_DOMAIN、_APP_DOMAIN_TARGET取值。 - 检查
.env文件的配置格式合法性- 确认两个变量没有被重复定义:同一个变量在文件中出现多次时,只有第一次出现的取值会生效,升级后很多用户会在文件末尾追加新配置,忽略了文件头部留存的旧空值配置
- 取值不要加多余的引号、行尾不要加同行注释:比如错误写法
_APP_DOMAIN="example.com" # 业务域名会导致实际注入的变量值带引号和注释内容,无法被程序识别 - 变量名前不要加多余空格,行首不要加#注释符
- 用正确的方式重载配置,不要直接重启单容器/服务器
Docker容器的环境变量是在容器首次创建时注入的,直接执行docker restart 容器ID、重启服务器都不会重新读取.env的新配置,只会复用容器创建时的旧参数。正确操作步骤:- 进入配置目录:
cd /opt/appwrite - 销毁现有运行容器:
docker-compose down - 重新读取配置创建并启动所有容器:
docker-compose up -d
- 进入配置目录:
- 排查宿主机环境变量覆盖问题
如果宿主机的/etc/environment、/etc/profile、/root/.bashrc等全局/用户shell配置文件中定义了同名的_APP_DOMAIN、_APP_DOMAIN_TARGET变量,Docker Compose会优先读取宿主机的环境变量,覆盖.env文件内的配置。你可以在宿主机执行printenv | grep _APP_DOMAIN检查,如果有输出就删除对应配置,执行source /etc/profile重载shell配置后再重新执行上一步的compose重载命令。 - 验证配置是否生效
所有容器启动完成后,先执行docker ps找到镜像为appwrite/appwrite:0.14.2.305的主容器ID,执行以下命令读取容器内的环境变量:docker exec <你的主容器ID> printenv | grep _APP_DOMAIN
如果命令能正常返回你设置的两个变量取值,说明配置已经加载完成,此时再执行docker-compose exec appwrite ssl手动触发SSL证书生成流程即可。
额外注意:提前确认AWS实例安全组已经放开80、443端口的入方向规则,且域名已经正确解析到实例公网IP,否则证书生成流程依然会失败。
内容的提问来源于stack exchange,提问作者Avidan Lamdan
相关产品推荐
相关产品推荐

