【发布时间】:2019-06-19 18:14:04
【问题描述】:
我正在尝试将 Jenkins Docker 映像部署到 ECS 并让 docker-compose 在我的管道内工作。
为了让这个 Jenkins 容器启动并运行,我遇到了又一堵墙。大多数问题只是让 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 之类的东西。
【问题讨论】:
标签: docker jenkins docker-compose amazon-ecs