在内网的ARM服务器上用docker部署dify1.1.2版本,照手册和网上文档出现问题。包括环境变量配置、无法安装插件、主机时区等
1、变量设置,根据手册或网上介绍,复制.env.example(环境变量文件)为.env,然后修改.env 和 docker-compose-template.yaml,再执行generate_docker_compose来生成新的docker-compose.yaml文件,最后用docker up -d来启动。后来翻了源码才发现,generate_docker_compose的逻辑其实是:.env.example + docker-compose-template.yaml = docker-compose.yaml。其中.env.example定义环境变量,docker-compose-template.yaml定义服务配置(引用了.env.example中的变量)。这里的环境变量定义不对,就会引发后面的问题
2、由于是内网服务器,本来以为插件可以离线安装,结果安装插件时还要下载相关依赖,plugin_daemon容器总是报网络错误,只好配置代理服务器,并将pip源改为清华。直接在docker-compose-template.yaml中容器plugin_daemon的环境变量中新增,不能随便在.env.example中新增环境变量HTTP_PROXY,那样可能导致其他使用容器出现问题。
HTTP_PROXY: http://proxy-ip:3128HTTPS_PROXY: http://proxy-ip:3128NO_PROXY: inter_ip/8,localhost,127.0.0.1,10.0.0./8,192.0.0.0/8,172.0.0.0/8
3、日志显示的时间是UTC,差了8个小时。以为在.env.example中设置LOG_TZ=Asia/Shanghai就行,结果发现部分容器不用这个变量。这里使用大模型帮我生成了一个脚本批量快速查看容器日志:
docker ps --format '{{.Names}}' | while read -r container_name; doecho "查看容器 $container_name 的最后 3 行日志:"docker logs --tail 3 "$container_name"echo "-----------------------------" done
同时为了让主机的时区正常,对不使用全局环境变量的容器需要在docker-compose-template.yaml单独指定LOG_TZ和TZ