读取配置中心的配置文件报错 ERROR PID_IS_UNDEFINED o.s.boot.SpringApplication Invaild argument syntax --spring.profiles.active=

昨天把剩下的两个docker改造好的服务上线了sit与uat,上线过程中又碰到了几个问题,排查了一晚上才搞定,首先把报错信息贴出来:

docker 改造完成的项目,通过docker-compose 上线运行,docker-compose.yml文件里写了对应的环境以及具体的版本,将该两者作为变量,提供给Dockerfile 中去读取设置的变量,在Dockerfile 文件中 最后构建完毕后执行CMD 命令使用这两个变量,实现配置文件随着环境的变化而自动切换。

典型的docker-compose文件如下所示:

version: '2'
services:
  your_service_name:  # 这里是你的服务名
    container_name: your_service_name
    image: https://xxx.com.cn/xxx
    restart: always
    ports:
      - "10086:10086"
    volumes:
      - /app/logs/:/data/app/logs
    environment:
      - JAVA_OPTS= your_params
      - ENV_OPTS= sit/uat

在Dockerfile中,构建好的容器执行的CMD命令如下

CMD ["/bin/bash","-c","java ${JAVA_OPTS} -jar /data/app/report.war --spring.profiles.active=${ENV_OPTS}"]

可以看到,报错提示中,显示 Invaild argument syntax  --spring.profiles.active= ,就是没有获取到docker-compose.yml设置的参数,检查后发现,由于docker-compose.yml文件在编写的时候,用另外一个终端打开其他docker-compose文件,复制了里面的属性,顺带带了空格,导致无法识别,删除envirnoment下的所有空格,并重新输入后,报错解决。

只能说,复制都有风险了,建议在linux中写docker-compose文件的时候,直接复制其他写好的来改,避免这种没有必要的错误,浪费时间。这个小错误排查了一晚上,太难了.......

posted @ 2022-09-09 15:57  charler。  阅读(367)  评论(0)    收藏  举报