packer对docker和aws AMI的支持都很好,来上个图:

配套的模版长这样:

{
	"variables": {
		"name": "webimage",
		"namespace": "jamtur01",
		"fqdn": "webapp.example.com",
		"osName": "ubuntu",
		"osVersion": "17.04",
		"ami": "ami-a025aeb6",
		"aws_region": "us-east-1",
		"aws_access_key": "",
		"aws_secret_key": ""
	},
	"builders": [{
			"type": "docker",
			"image": "{{user `osName`}}:{{user `osVersion`}}",
			"commit": true
		},
		{
			"type": "amazon-ebs",
			"access_key": "{{user `aws_access_key`}}",
			"secret_key": "{{user `aws_secret_key`}}",
			"region": "{{user `aws_region`}}",
			"source_ami": "{{user `ami`}}",
			"instance_type": "t2.micro",
			"ssh_username": "ubuntu",
			"ami_name": "{{user `fqdn`}}-{{timestamp | clean_ami_name}}",
			"ami_description": "Web Application Image",
			"tags": {
				"name": "{{user `name`}}",
				"namespace": "{{user `namespace`}}",
				"fqn": "{{user `fqdn`}}",
				"os": "{{user `osName`}} {{user `osVersion`}}",
				"built": "{{isotime}}"
			}
		}
	],
	"provisioners": [
    {
	    "type": "file",
	    "source": "Gemfile",
	    "destination": "/tmp/Gemfile"
    },
		{
			"type": "shell",
			"script": "provision.sh",
			"override": {
				"amazon-ebs": {
					"execute_command": "sudo {{.Path}}"
				}
			}
		}
	],
	"post-processors": [
		[
		  {
        "type": "docker-tag",
				"repository": "{{user `namespace`}}/{{user `name`}}",
				"tag": "{{user `fqdn`}}",
				"only": ["docker"]
      },
			{
				"type": "docker-push",
				"only": ["docker"]
			}
		]
	]
}

再来一张在CI中使用packer的图:

最新文章

  1. linQ学习笔记之三高级语句
  2. RPM方式安装MySQL5.6
  3. URL 路径长度限制(错误:指定的文件或文件夹名称太长)
  4. 当kfreebsd 用户遇见openSUSE系统
  5. 简明Vim练级攻略(转载)
  6. [MySQL] 常用SQL的优化--18.4
  7. CAF(C++ actor framework)使用随笔(同步发送 异步与同步等待)(三)
  8. .NET 操作PDF文档以及PDF文件打印摸索总结
  9. CodeForces 591B
  10. Unix/Linux环境C编程入门教程(33) 命令和鼠标管理用户和组
  11. Swift语言iOS8的蓝牙Bluetooth解析
  12. Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)
  13. HDU1548:A strange lift(Dijkstra或BFS)
  14. SOFA 源码分析 —— 过滤器设计
  15. Laravel框架中打印sql
  16. 初识redux走向redux-react
  17. python 3 字符编码解码问题
  18. 用智能TFT液晶模块这种串口屏做产品界面设计太简单了,大大的节省了开发时间
  19. 萌新接触前端的第一课——HTML
  20. Android开发——官方推荐使用DialogFragment替换AlertDialog

热门文章

  1. 解决 python 中,时间日期不能序列化的问题
  2. JAVAEE——BOS物流项目08:配置代理对象远程调用crm服务、查看定区中包含的分区、查看定区关联的客户
  3. python之Redis的字符串类型操作
  4. oracle10g 基于linux6安装问题收集
  5. c++ --> 父类与子类间的继承关系
  6. 移动前端的html5 head 头标签
  7. Mybatis学习笔记二
  8. alpha冲刺总结随笔
  9. 需求分析&原型设计
  10. 十款不容错过的Swift iOS开源项目及介绍