Docker中Dokku启用Let's Encrypt报错:docker.env不存在但实际存在
Dokku + Let's Encrypt:docker.env文件存在但提示找不到的解决方法
问题场景
在Docker环境部署的Dokku中启用Let's Encrypt时,系统提示docker.env文件不存在,但手动检查确认该文件实际存在(为空文件)。
报错日志示例
! Error: Could not locate docker.env file for app <app-name> ! Ensure the file exists and try again.
文件验证结果
- 主机端文件检查:
ls -l /var/lib/dokku/apps/<app-name>/docker.env # 输出:-rw-r--r-- 1 dokku dokku 0 Aug 10 14:22 /var/lib/dokku/apps/<app-name>/docker.env - 容器内文件检查:
docker exec -it $(dokku ps:report <app-name> --container-id) ls -l /app/docker.env # 输出:-rw-r--r-- 1 root root 0 Aug 10 14:22 /app/docker.env
应用docker-compose.yml配置
version: '3' services: web: image: my-app-image:latest ports: - "80:80" - "443:443" env_file: - docker.env volumes: - ./docker.env:/app/docker.env:ro
关键诊断信息
dokku report核心输出:dokku_version: 0.29.1 docker_version: 24.0.7 plugin_letsencrypt_version: 0.13.1 app_env_vars: {}dokku ps:inspect挂载信息:"Mounts": [ { "Type": "bind", "Source": "/var/lib/dokku/apps/<app-name>/docker.env", "Destination": "/app/docker.env", "Mode": "ro", "RW": false, "Propagation": "rprivate" } ]
解决方案
填充基础环境变量到docker.env
空文件可能被插件判定为无效,添加至少一个环境变量:echo "APP_ENV=production" >> /var/lib/dokku/apps/<app-name>/docker.env dokku ps:restart <app-name>修正文件权限与归属
确保文件权限符合Dokku运行要求:chown dokku:dokku /var/lib/dokku/apps/<app-name>/docker.env chmod 644 /var/lib/dokku/apps/<app-name>/docker.env重置Let's Encrypt插件
卸载并重新安装插件,修复可能的插件缓存问题:dokku plugin:uninstall letsencrypt dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git验证应用环境变量加载
确认应用能正确读取环境变量:dokku config:show <app-name> # 应输出包含APP_ENV=production的条目
内容的提问来源于stack exchange,提问作者marko kraljevic
相关产品推荐
相关产品推荐

