Запустите execlineb, если не удалось запустить контейнер. Docker для windosw - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь запустить простой скрипт внутри docker контейнера после запуска. Изначально предыдущий разработчик решил использовать s6 внутри.

#!/usr/bin/execlineb -P

foreground { sleep 2 }
nginx

Когда я пытаюсь начать, я получаю это сообщение

 execlineb: usage: execlineb [ -p | -P | -S nmin | -s nmin ] [ -q | -w | -W ] [ -c commandline ] script args

Похоже, что-то не так с выполнением этих сценариев или с execline.

Я использую docker для windows в windows10, однако, если кто-то пытается создать этот контейнер в Ubuntu (или любой другой linux), все в порядке.

Кто-нибудь может помочь с такой проблемой?

DockerImage: simple alpine

1 Ответ

0 голосов
/ 25 марта 2020

Согласно нашему исследованию этой «ОГРОМНОЙ» проблемы, мы нашли два способа ее решения. Определенно, это проблема со специальными символами, такими как '\ r'

Вариант 1 dosto unix:

  1. install dosto unix в вашем контейнере (в docker file)

    RUN apk --no-cache add \ dos2 unix \

  2. запустить его заново, ваш sh скрипт.

    RUN для файла в {PathToYourFiles}; do \ dos2 unix $ file; \ chmod a + xwr $ file; \ done

  3. наслаждайтесь вашими сценариями.

Вариант 2 VsCode (или любой текстовый редактор):

  1. Изменение CRLF 'Последовательность конца строки' до LF VS Нижняя панель кода Параметры окончания строки
  2. наслаждайтесь сценариями.
...