Я пытаюсь развернуть образ 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.