在docker上嘘:语法错误:意外的文件结束(期待“然后”)

我正在运行Dockerfile中的startup.sh脚本,并在运行docker容器时出现以下错误:

docker run -p 5308:5308 activity-logger : not found line 2: : not found line 5: startup.sh: line 13: syntax error: unexpected end of file (expecting "then") 

如果我尝试从命令行运行sh startup.sh ,它似乎工作正常。 有任何想法吗?

startup.sh

 #!/bin/sh export env_file=`echo microservice-configuration/$LS_ENVIRONMENT.environment.properties` export startup_command="npm run start:dist" if [ -f $env_file ]; then echo "Using environment specific configuration file $env_file" env $(cat $env_file | xargs) $startup_command else echo "There is no environment specific configuration file $env_file" $startup_command fi 

Dockerfile

 FROM node:6.9.4-alpine # Create app directory RUN mkdir -p /opt/app WORKDIR /opt/app COPY . /opt/app RUN npm install -g yarn RUN yarn RUN yarn build # This is not working very well - the dependencies cannot be installed afterwards # RUN yarn --production ENV NODE_ENV production EXPOSE 5308 CMD ["/bin/sh", "startup.sh"] 

: not found line 2:

这是指向这个文件中的空白的东西搞砸了。 最可能的原因是在Windows上编辑脚本并得到错误的换行符。 停止使用您使用的任何编辑器,并使用更好的编辑器或像dos2unix这样的工具修复脚本。