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

时间:2017-02-08 17:56:15

标签: docker sh dockerfile

我从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"]

1 个答案:

答案 0 :(得分:2)

: not found line 2:

这指向了这个文件中的空白区域。最可能的原因是在Windows上编辑脚本并获取错误的换行符。停止使用您正在使用的任何编辑器,并使用更好的编辑器或dos2unix等实用程序修复脚本。