如何使用cli将项目上传到Amazon ECS

我正在学习如何自动化我的项目交付。 我能够创build群集,但我坚持在步骤,我必须上传文件到EC2实例。

现在我正在运行这些命令

ecs-cli up --keypair my_keypair --capability-iam --size 1 --instance-type t2.micro --force 

这创build了集群。 然后我为php和nginx创builddocker容器。

 ecs-cli compose up 

这创build容器,但没有任何文件。

现在,如果我使用SSH 手动login到EC2实例并创buildphpinfo.php文件,那么我可以在浏览器中查看它,告诉我一切正确。 但这是手动步骤。 我怎样才能自动推送我的项目文件?

也许我不明白这是如何工作的,而且会走向错误的方向。 所有的教程,我看到使用现成的wordpress图像。 我没有部署WordPress的形象。 我想部署phpinfo.php(例如)。

谢谢

 version: '2' services: nginx: image: tutum/nginx cpu_shares: 50 mem_limit: 134217728 ports: - "80:80" links: - phpfpm volumes: - /home/ec2-user/nginx/conf:/etc/nginx/sites-available/ - /home/ec2-user/nginx/conf:/etc/nginx/sites-enabled/ - /home/ec2-user/public:/var/www/html phpfpm: image: php-nginx-fpm:7.0.19-37 cpu_shares: 50 mem_limit: 134217728 ports: - "9000:9000" - "3306:3306" volumes: - /home/ec2-user/public:/var/www/html 

由于您正在使用ECS(弹性容器服务),因此您需要首先对您的应用程序进行Docker化,然后将生成的Docker镜像上传到Amazon ECR :Elastic Container Registry。

为此,您需要进入EC2容器服务 – >registry,并为您的容器创build一个存储库。 然后你configuration

在您的源代码中,您需要有一个Dockerfile来构build您的容器:从基本映像开始,然后将源代码添加到容器中。

一旦你有了,你需要build立你的构build服务器,并推动docker容器,或者只是从你的机器手动。

您将您的ECS服务设置为使用ECR中的泊坞窗图像,当您执行泊坞窗推送到ECR时,您将更新任务定义,以抓取最新版本的泊坞窗容器。

您可以通过aws cli,通过Web控制台本身(单击单击)或通过一些基础设施configuration工具(如Cloudformation或Terraform)来设置ECS和ECR。 无论如何浮动你的需求…

您可以使用S3存储桶轻松实现此目的。 按以下步骤操作:

  1. 在S3中创build一个存储桶,并使用控制台或以下命令将代码从本地文件夹上传到S3

    aws s3同步。 S3:// mybucket

  2. 现在在AWS中创build一个EC2angular色并添加S3读取权限。

  3. 将此angular色分配给您的EC2实例。 现在您的EC2有权下载代码。
  4. 只要你想在EC2中使用你的代码,你可以使用下面的命令来下载(你也可以在你的引导脚本中包含这个命令)

    aws s3 sync s3:// mybucket。

好的部分是S3同步命令将只上传/下载增量文件。 所以如果只修改一个文件并执行上面的命令,只有修改过的文件会被上传到S3并下载到EC2。

你可以使用scp。 这使用ssh以更容易自动化的方式复制文件。

 scp file <sshtarget>:/path/to/file 

如果您愿意更改部署stream程,则可以使用CloudFormation模板。

这个页面描述了如何使用已经存在的文件来部署一个ec2实例。 (查看第2步中的“文件”部分)