Как запустить скрипт оболочки на хосте из контейнера док-станции jenkins? - PullRequest
0 голосов
/ 22 октября 2018

Я знаю, что моя проблема уже обсуждалась в Как запустить скрипт оболочки на хосте из докер-контейнера? , но я думаю, что моя проблема немного сложнее.

Сначала я пытаюсьобъяснить мою ситуацию.Я использую jenkins 2.x из док-контейнера в CentOS VM (Host).В jenkins я создал Job, который проверяет 3 файла из SVN (2 сценария оболочки и 1 файл .jar).эти файлы будут загружены в рабочую область jenkins в контейнере док-станции jenkins, а также на хосте в смонтированном каталоге, например:

 volumes:
  - ${DATA_HOME}/jenkins/data:/var/jenkins_home

Один из этих сценариев будет выполнен из задания jenkins, а другой -.Второй сценарий проверяет каталог SVN и делает гораздо больше вещей.

Поэтому я хочу новый подключенный том в этом каталоге, все результаты выполненного второго сценария будут размещены на хосте.Я думаю, что подключиться к хосту через 'SSH' и выполнить скрипт, кажется, все в порядке, но как я могу это сделать.

Надеюсь, я мог бы объяснить мою проблему понятной

1 Ответ

0 голосов
/ 22 октября 2018

Я отвечу по поводу «Я думаю, что подключение к хосту через« SSH »и выполнение скрипта, похоже, нормально, но как я могу это сделать»

Pass Ip хост-машинык вашей команде запуска.

docker run --name redis --env pass=pass_my --add-host="hostmachine:192.168.1.23" -dit redis

Теперь

docker exec -it redis ash

и выполните эту команду.Это сделает SSH от контейнера к хосту

ssh user_name@hostmachine 'ls; bash /home/user_name/Desktop/test.sh; docker run --name db  -dit db; docker ps'

Если вы хотите что-то без пароля, тогда установите ssh-ключ в контейнере, или вы также можете попробовать

sshpass -p $pass ssh user_name@hostmachine 'ls;/home/user_name/Desktop/test.sh; docker run --name db  -d
it db; docker ps'

или, если хотитедля запуска скрипта, который находится внутри контейнера, вы также можете сделать это, просто передав скрипт в ssh.

sshpass -p $pass ssh user_name@hostmachine < ./ab.sh

Примечание: $ pass - пароль хоста от ENV и hostmachine является хостом, который мы установили во время выполнения команды.

...