如何将文件从Docker镜像写入EFS?
组成
- Jenkins服务器上的EC2实例,使用EFS
- 以上Jenkins服务器的Docker镜像
需要
- 每当ECS启动构buildJenkins服务器的任务时,将模板写入EFS上的目录
哪里是适当的地方去做写?
试着
如果我在Dockerfile中执行该操作,它将写入Docker镜像,但不会将更改传播到EFS,以便Jenkins服务器上的项目可以使用这些模板。
我试图把写入命令jenkins.sh
但我不知道如何运行,无论如何,它不放置模板,我需要他们。
您需要使用卷启动该任务,然后将该卷装入容器。 这样,您可以在多个Jenkins启动/停止循环中拥有持久的存储空间。
你的任务定义看起来像下面(我已经删除了不相关的部分)。 重要的组件是mountPoints
和volumes
。 并不是说这与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中的任务定义: