无法将Docker以外的Docker与ECS中的Jenkins一起使用

时间:2019-01-25 21:50:39

标签: docker jenkins docker-compose amazon-ecs

我正在尝试将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之类的东西相比,我更希望获得这项工作。

1 个答案:

答案 0 :(得分:0)

Dockerfile中的一个问题是您正在将文件复制到/var/jenkins_home中,该文件将消失,因为/var/jenkins_home被定义为父Jenkins映像中的卷,并且您复制到 之后的卷将被丢弃-请参阅https://docs.docker.com/engine/reference/builder/#notes-about-specifying-volumes