FIWARE iotagent-opcua:latest容器启动失败 报config.properties缺失错误
问题
执行docker-compose启动OPC UA IoT Agent服务时,iotagent4fiware/iotagent-opcua:latest 容器持续崩溃重启,删除镜像、容器重新部署后问题依旧。
容器输出核心报错为找不到配置文件,完整日志如下:
*********************************************** 警告:建议为安全连接启用身份认证 ----------------------------------------------- 信息:IoT Agent以独立模式运行 {"time":"2022-06-16T13:14:06.962Z","lvl":"ERROR","err":{"errno":-2,"syscall":"open","code":"ENOENT","path":"./conf/config.properties","message":"ENOENT: no such file or directory, open './conf/config.properties'","name":"Error","constructor":"Error","stack":"Error: ENOENT: no such file or directory, open './conf/config.properties'\n at Object.openSync (fs.js:462:3)\n at readFileSync (fs.js:364:35)\n at PropertiesReader.append (/opt/iotagent-opcua/node_modules/properties-reader/src/properties-reader.js:100:17)\n at new PropertiesReader (/opt/iotagent-opcua/node_modules/properties-reader/src/properties-reader.js:16:9)\n at propertiesReaderFactory (/opt/iotagent-opcua/node_modules/properties-reader/src/properties-reader-factory.js:6:11)\n at Object.checkproperties (/opt/iotagent-opcua/iot_agent_modules/check_properties.js:4:26)\n at Object. (/opt/iotagent-opcua/index.js:12:20)\n at Module._compile (internal/modules/cjs/loader.js:999:30)\n at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n at Module.load (internal/modules/cjs/loader.js:863:32)"},"msg":"Error: ENOENT: no such file or directory, open './conf/config.properties'"} {"comp":"iotAgent-OPCUA","op":"Index","srv":"","subsrv":"","time":"2022-06-16T13:14:06.965Z","lvl":"ERROR","msg":"undefined"}
根因
容器内服务启动时需要读取./conf/config.properties配置文件,该文件通过docker volume从宿主机挂载到容器内,挂载路径不匹配、宿主机本地配置文件缺失、启动命令执行路径错误都会触发这个报错。
修复步骤
- 确认执行
docker-compose命令的工作目录为部署项目的根目录,不要在conf、docker等子目录下执行启动命令,否则相对路径挂载会失效。 - 检查宿主机项目根目录下的
conf文件夹,确认是否存在config.properties文件。如果文件缺失,直接复制同目录下的示例配置文件生成:
生成后根据实际部署环境修改配置内的服务地址、端口、认证参数即可。cp conf/config.properties.example conf/config.properties - 打开项目根目录下的
docker-compose.yml,找到iotagent-opcua服务的volumes配置段,确认存在以下挂载规则,保证本地conf目录能正确映射到容器内的工作路径:
如果挂载路径书写错误,直接修正后保存文件。volumes: - ./conf:/opt/iotagent-opcua/conf - 清理旧的异常容器后重新启动服务:
启动后查看容器日志,不会再出现配置文件不存在的报错。docker-compose down docker-compose up -d
补充说明:不建议使用
latest标签的镜像匹配固定版本的教程配置,不同版本镜像的配置文件路径、参数项可能存在差异,如果上述操作完成后仍有异常,将镜像标签替换为教程中标注的固定版本号后重新拉取启动即可。
内容的提问来源于stack exchange,提问作者Umer Usman
相关产品推荐
相关产品推荐

