Всем привет )
Есть следующий Dockerfile:
FROM node:16-alpine
ENV PORT=5014
ENV NODE_ENV=development
ENV DATABASE_PORT=3306
WORKDIR /usr/src/app
RUN apk update && apk add bash tini tzdata
RUN cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime \
&& echo "Europe/Moscow" > /etc/timezone
RUN wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh
RUN chmod a+x wait-for-it.sh
COPY package*.json ./
COPY ["src", "./src"]
COPY ["test", "./test"]
RUN npm ci
RUN chmod a+x src/start.sh
EXPOSE 8080
CMD ["src/start.sh"]
Соответвенно при старте контейнера запускается src/start.sh следующего содержания:
#!/bin/bash
set -e
./wait-for-it.sh "food_calc_mysql:${DATABASE_PORT}" --timeout=1 -- echo "Database is up"
if [[ ${NODE_ENV} == 'development' ]]; then
exec npx nodemon --exec "node ./src/bin/www"
else
echo "NODE_ENV is not set"
exit 1
fi
и возникает такая ошибка:
/usr/src/app/src/start.sh:5
./wait-for-it.sh "food_calc_mysql:${DATABASE_PORT}" --timeout=1 -- echo "Database is up"
^
SyntaxError: Unexpected token '/'
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1031:15)
at Module._compile (node:internal/modules/cjs/loader:1065:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47
то есть скипт src/start.sh запускается как node.js приложение, а не как bash скрипт. Не пойму почему так происходит.
Спасибо.