Docker中与win系统中运行shell脚本遇到的问题

在今天的开发中遇到一个问题

Dockerfile 的关键代码:

USER ocpuser
WORKDIR /opt/deployments/

EXPOSE 8080
CMD ["/bin/sh","/opt/deployments/bin/startup.sh","-t","dev"]

startup.sh的关键代码

APPLICATION="Ring4j-Demo"
APPLICATION_JAR="boot/Ring4j-Demo-server.jar"
NEW_CLASSPATH="/opt/deployments/config/"
CONFIG_DIR="/opy/deployments/config/"
cd ..
java -Dapp.name=Ring4j-Demo -Dapp.tag=$TAG -Xbootclasspath/a:$NEW_CLASSPATH -jar $APPLICATION_JAR --spring.config.location=$CONFIG_DIR

 

文件目录

bin

---startup.sh

boot

---Ring4j-Demo-server.jar

config

libs

 

在win中启动的时候,在根目录打开git运行git bash here,运行sh ./bin/startup.sh之后,系统运行正常

在部署到云平台中,发现报错“找不到该文件   boot/Ring4j-Demo-server.jar”

在看到报错时认为是jar文件目录没有写对,一直反复核实及其修改权限。最后发现,系统在执行shell脚本的时候,是把代码拿到当前目录来执行,而不是到startup.sh目录去执行脚本,所以在startup.sh中的cd .. 引起了这个路径错误。

所以去掉cd ..  后一切正常

你可能感兴趣的:(Dockerfile)