Docker中例如Dockerfile设置环境变量或者docker指令-e后面的参数里带有特殊字符的时候,默认就会出现问题,例如
docker run -d \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=172.17.0.4 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_USER=nacos \ -e MYSQL_SERVICE_PASSWORD=nacos \ -e MYSQL_SERVICE_DB_PARAM=allowPublicKeyRetrieval=true\&autoReconnect=true\&useUnicode=true\&characterEncoding=UTF-8\&useSSL=false\&serverTimezone=Asia/Shanghai \ -p 8848:8848 \ -p 8848:9848 \ -p 8848:9849 \ -v /home/docker/nacos/logs:/home/nacos/logs \ --name nacos \ --restart=always \ nacos/nacos-server
其中-e MYSQL_SERVICE_PASSWORD=abc&123 如果密码里带有&或者!等特殊字符,实际带入环境变量中的密码就不正确了
这个时候,需要在将这些特殊字符转义,转义很简单,只需要在这些特殊字符前面上\就可以了,例如:
-e MYSQL_SERVICE_PASSWORD=abc\&123
文章评论