Не удается заставить Докера за пределами Докера работать с Дженкинсом в ECS - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь развернуть образ Jenkins Docker в ECS и выполнить докер-компоновку внутри моего конвейера.

Я ударил стену за стеной, пытаясь запустить и запустить этот контейнер Дженкинса. Большинство проблем заключалось в том, что команда docker работала внутри конвейера (включая получение прав доступа / группы прав).

Я дошел до того, что команда работает и использует докер-сокет хоста (docker ps выводит контейнер jenkins и агент ecs), и docker-compose работает (docker-compose --version работает), но когда я пытаюсь запустить все, что связано с файлами внутри конвейера, я получаю сообщение об ошибке «нет такого файла или каталога». Это происходит, когда я запускаю docker-compose -f docker-compose.testing.yml up -d --build (он не может найти файл yml), а также когда я пытаюсь запустить базовую сборку докера, он не может найти локальные файлы, используемые в команде COPY (т. е. COPY. / app). Я попытался изменить команду на ./file.yml и $ PWD / file.yml и все еще получаю ту же ошибку.

Вот мой док-файл Дженкинса:

FROM jenkins/jenkins:lts

USER root

RUN apt-get update && \
    apt-get install -y --no-install-recommends curl

RUN apt-get remove docker
RUN curl -sSL https://get.docker.com/ | sh

RUN curl -L --fail https://github.com/docker/compose/releases/download/1.21.2/run.sh -o /usr/local/bin/docker-compose
RUN chmod +x /usr/local/bin/docker-compose
RUN groupadd -g 497 dockerami \
  && usermod -aG dockerami jenkins

USER jenkins

COPY plugins.txt /usr/share/jenkins/ref/plugins.txt

COPY jobs /app/jenkins/jobs

COPY jenkins.yml /var/jenkins_home/jenkins.yml

RUN xargs /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

RUN echo 2.0 > /usr/share/jenkins/ref/jenkins.install.UpgradeWizard.state

ENV CASC_JENKINS_CONFIG /var/jenkins_home/jenkins.yml

У меня также есть Terraform, создающий определение задачи и привязывающий /var/run/docker.sock от хоста к контейнеру jenkins.

Я надеюсь, что это сработает, так как мне понравился Jenkins, так как мы начали использовать его около 2 лет назад, и у меня были эти конвейеры, работающие с docker-compose в нашей неконтейнерной установке Jenkins, но получение Jenkins в контейнере так далеко тянет зубы. Я бы предпочел, чтобы это работало, чем менять рабочие процессы прямо сейчас на что-то вроде Concourse или Drone.

1 Ответ

0 голосов
/ 01 марта 2019

Одна проблема, которая возникает в вашем Dockerfile, заключается в том, что вы копируете файл в /var/jenkins_home, который исчезнет, ​​так как /var/jenkins_home определяется как том в родительском образе Jenkins и любые файлы, которые вы копируете в том после объявляемый объем отбрасывается - см. https://docs.docker.com/engine/reference/builder/#notes-about-specifying-volumes

...