Docker或Docker for AWS和AWS EC2上的部署

2个问题在这里。

我试图找出什么是普通的DockerDocker for AWS之间的主要区别。

对于我的项目,我将运行在Angular 2中编码的GUI,打包在AWS EC2上的Docker容器中。

1)我应该使用Docker for AWS来达到我的目的吗?

2)是否有可能,Docker可以[1]从Github存储库获取我的代码,[2]在运行docker时构build它?

3)什么是在AWS上部署Docker容器的最佳方式? 有没有遵循的指南或一些最佳实践的例子?

先谢谢你!

1)我应该使用Docker for AWS来达到我的目的吗?

Docker for AWS通过CloudFormation提供自我修复的基础架构。 如果您的应用程序需要自动缩放,那么这是一条很好的路线。 但是,成本会加起来。

2)是否有可能,Docker可以[1]从Github资源库获取我的代码,[2]在运行docker时构build它?

使用GitHub网页挂钩/集成,您可以通过Jenkins / Travis / ANOther CI工具为您创build图像。 这可以将映像发布到Docker Hub或自我托pipe/第三方registry。

3)什么是在AWS上部署Docker容器的最佳方式? 有没有遵循的指南或一些最佳实践的例子?

每个用例都是不同的。 这是testing吗? 演示? 生产? 恐怕解决这个问题太多了。

编辑:

3)现在是Demos porpuse

我只需要启动一个EC2实例并安装docker-engine并使用它

正如@Rawkode解释一切。 我只是想补充一点你的最后一点。 对于使用ec2实例运行基于Docker的应用程序,您可以使用

在Amazon EC2容器服务(Amazon ECS)上部署Docker容器

Amazon EC2容器服务(Amazon ECS)是用于在可伸缩群集上运行Docker应用程序的Amazon Web Service。

你可以使用docker运行你的angular度应用程序。 正如你在评论中提到你可以使用ng build --prod 。 为您构build和创builddist文件夹。以下是我如何在AWS中部署基于angular码docker的应用程序。

首先,创build一个将服务于你的静态文件的快递服务器。

  var express = require('express'); var path = require('path'); var router = express.Router(); var app = express(); // serve angular front end files from root path app.use('/', express.static('dist', { redirect: false })); // rewrite virtual urls to angular app to enable refreshing of internal pages app.get('*', function(req, res, next) { res.sendFile(path.resolve('dist/index.html')); }); app.listen(3000, function(req, res) { console.log("start"); }) 

所以这将为您的angular度静态文件和S3你将面临刷新错误,可以使用重新写入规则解决。 创build您的docker文件为快递和快递将处理静态文件

  FROM alpine RUN apk update && apk upgrade RUN apk add nodejs RUN mkdir -p /app ADD app/package.json /app WORKDIR /app/ ENV HOME /app ENV NODE_ENV development RUN npm install ADD app /app EXPOSE 3000 CMD npm start 

里面的应用程序文件夹中的快递服务器文件,将dist文件夹放在同一目录。

现在要部署您的基于Docker的应用程序,请访问此链接

https://aws.amazon.com/getting-started/tutorials/deploy-docker-containers/

在AWS上托pipeWeb应用程序的最佳实践

以上我只是试图解释如何在AWS ECS上运行angular度应用程序,并且可以通过运行同一任务的多个副本并configuration负载平衡器来使其更好。

至于最佳实践是关于Web应用程序

对于静态应用程序

在这里输入图像说明 在这里输入图像说明 在这里输入图像说明

更详细的最佳实践,托pipenetworking应用程序

Docker和AWS联合起来,在Amazon EC2基础架构上部署企业容器即服务(CaaS)Docker环境比以往更容易。 在AWS上运行Docker Datacenter为开发人员和IT运营提供了一种高度可靠,低成本的方式,只需单击一下即可部署生产就绪的工作负载。

https://www.docker.com/aws

秘密换亚马逊EC2容器服务

AWS换初创的build筑-最佳实践-自动化-您的基础设施