如何将文件从Docker镜像写入EFS?

组成

  • Jenkins服务器上的EC2实例,使用EFS
  • 以上Jenkins服务器的Docker镜像

需要

  • 每当ECS启动构buildJenkins服务器的任务时,将模板写入EFS上的目录

哪里是适当的地方去做写?

试着

如果我在Dockerfile中执行该操作,它将写入Docker镜像,但不会将更改传播到EFS,以便Jenkins服务器上的项目可以使用这些模板。

我试图把写入命令jenkins.sh但我不知道如何运行,无论如何,它不放置模板,我需要他们。

您需要使用卷启动该任务,然后将该卷装入容器。 这样,您可以在多个Jenkins启动/停止循环中拥有持久的存储空间。

你的任务定义看起来像下面(我已经删除了不相关的部分)。 重要的组件是mountPointsvolumes 。 并不是说这与volumesFrom 一样,因为您不是从另一个容器装入卷,而是在一个任务中运行它们。

这也假定您在默认的JENKINS_HOME目录中运行Jenkins,并且已经将JENKINS_HOME上的EFS驱动器挂载到/mnt/efs/jenkins-home

 { "requiresAttributes": ... "taskDefinitionArn": ... your ARN ..., "containerDefinitions": [ { "portMappings": ... .... more config here ..... "mountPoints": [ { "containerPath": "/var/jenkins_home", "sourceVolume": "jenkins-home", } ] } ], "volumes": [ { "host": { "sourcePath": "/mnt/efs/jenkins-home" }, "name": "jenkins-home" } ], "family": "jenkins" } 

ECS中的任务定义:

Jenkins任务的ECS任务定义