Как поставить двойной амперсанд в dockerfile - PullRequest
2 голосов
/ 06 августа 2020

Я написал файл докеров, как показано ниже.

FROM mhart/alpine-node:12.18.3
WORKDIR /usr/app
COPY package.json
RUN yarn install
EXPOSE 8000
CMD ["yarn", "start"]

Это хорошо работает. Но я хочу начать пряжу с амперсанда. Например, я могу запустить начало пряжи после. sh.

bash some.sh && yarn start

Поэтому, если возникнет ошибка в 'some. sh', 'начало пряжи' не будет выполнено.
Как я могу поместить эту опцию в dockerfile? Спасибо, что прочитали.

Ответы [ 2 ]

2 голосов
/ 06 августа 2020

если ошибка произошла в 'some. sh', 'начало пряжи' не выполняется.

Вам необходимо выбрать

  • Игнорировать, если ошибка произошла в some.sh
  • Не запускать yarn start, если ошибка произошла в some.sh

Для первого варианта

CMD ["sh", "-c","./some.sh ; yarn start"]

это будет игнорироваться, даже если some.sh выйдет с кодом состояния 1.

Второй вариант, не запускайте yarn start , если есть. sh выйти с 1, иначе запустить.

CMD ["sh", "-c","./some.sh && yarn start"]
0 голосов
/ 06 августа 2020

Было бы проще вызвать один some.sh скрипт (при условии, что ваш COPY он находится в вашем Dockerfile), который:

  • выполняет ваши команды
  • call yarn start только если эти команды были выполнены успешно

Таким образом, вы управляете сложностью запуска внутри сценария оболочки, а не в файле Dockerfile CMD (который вызывает только ваш сценарий)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...