我正在尝试将Jenkins Docker映像部署到ECS,并在管道中进行docker-compose工作。
我一墙接一墙地尝试使这个詹金斯容器启动并运行。大多数问题只是使docker命令在管道内工作(包括获得权限/组权限)。
我已经知道命令可以使用主机docker套接字(docker ps
输出jenkins容器和ecs代理),而docker-compose可以工作(docker-compose --version
可以),但是当我尝试运行任何涉及管道内部文件的内容,但出现“无此文件或目录”错误。当我运行docker-compose -f docker-compose.testing.yml up -d --build(找不到yml文件)时发生这种情况,并且当我尝试运行基本的docker build时也找不到COPY命令中使用的本地文件(即COPY ./app)。我尝试将命令更改为./file.yml和$ PWD / file.yml,但仍然遇到相同的错误。
这是我的Jenkins Dockerfile:
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容器。
自从大约2年前我们开始使用Jenkins以来,我一直希望能够使用它,并且我已经在非容器化的Jenkins安装中将这些管道与docker-compose一起使用,但是让Jenkins进行了容器化到目前为止一直在拔牙。与现在必须将我的工作流更改为Concourse或Drone之类的东西相比,我更希望获得这项工作。
答案 0 :(得分:0)
Dockerfile中的一个问题是您正在将文件复制到/var/jenkins_home
中,该文件将消失,因为/var/jenkins_home
被定义为父Jenkins映像中的卷,并且您复制到 之后的卷将被丢弃-请参阅https://docs.docker.com/engine/reference/builder/#notes-about-specifying-volumes