Запустите сценарий внутри контейнера Docker, который создает экземпляр другого контейнера Docker. - PullRequest
0 голосов
/ 11 июня 2019

У меня есть два образа докера на машине linux. Один запускает jenkins, а другой - службу nodejs. Дженкинс подключен к учетной записи gitlab, поэтому в моем конвейере используется

git branch: 'master', credentialsId: '6bc7-41b5-a1d9-2583489ad967', url: 'https://gitlab.com/myservice'

каждый раз, когда я собираю проект, у меня в папке хоста находится последняя версия git jenkins_home / workspace / MyJenkinsItem / myservicerepo. Образ докера с jenkins запускается с помощью следующей команды:

docker run --rm -d --name jenkins -v $MYPATH/jenkins/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts

В проекте nodejs на хост-компьютере у меня есть скрипт bash, который копирует файлы из jenkins_home / workspace / MyJenkinsItem / myservicerepo (хост-компьютер) в папку по моему выбору (например, / mypath / nodejs). Затем он создает образ Docker, используя Dockerfile, и запускаю нужный мне сервис.

Что я хотел бы сделать, это автоматизировать процесс от Дженкинса. Это означает, что каждый раз, когда я собираю конвейер jenkins из своего контейнера jenkins, мне приходится обращаться к сценарию в / mypath / nodejs и запускать в другом контейнере весь проект в /mypath/nodejs.

.

Я не уверен, как я мог это сделать. Я попытался скопировать

docker run --rm -d --name jenkins  -v $MYPATH/nodejs/jenkins-script.sh:/var/scripts/jenkins-script.sh -v $MYPATH/jenkins/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts

но у меня ошибка jenkins, из-за которой jenkins_script.sh не может найти определенные папки в контейнере. Кажется, что мне нужно смонтировать все nodejs внутри моего контейнера jenkins и создать оттуда экземпляр nodejs?

Заранее спасибо

1 Ответ

0 голосов
/ 12 июня 2019

Всякий раз, когда мне приходилось запускать jenkins, мне приходилось монтировать докерский носок и папку, в которой были все файлы для докерного контейнера, т.е. Dockerfile, package.json для nodejs и т. Д. Итак, я сделал следующее:

docker run --rm -d --name jenkins \
        -v MyNodeJSPAth/myfolder:MyNodeJSPAth/myfolder \
        -v MyPATH/jenkins/jenkins_home:/var/jenkins_home \
        -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker \
        -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts

Кроме того, поскольку у меня было отказано в разрешении на команду docker внутри контейнера jenkins, я изменил разрешения для docker.sock в / var / run на

chmod o+xw /var/run/docker.sock

Однако вы также можете создать / использовать текущего пользователя для контейнера Docker, который имеет доступ к /var/run/docker.sock, но я не использовал его.

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