Php 如何使用cli将项目上传到Amazon ECS
我正在学习如何自动化我的项目交付。 我能够创建集群,但我必须将文件上传到EC2实例 现在我正在运行这些命令Php 如何使用cli将项目上传到Amazon ECS,php,amazon-web-services,docker,amazon-ec2,Php,Amazon Web Services,Docker,Amazon Ec2,我正在学习如何自动化我的项目交付。 我能够创建集群,但我必须将文件上传到EC2实例 现在我正在运行这些命令 ecs-cli up --keypair my_keypair --capability-iam --size 1 --instance-type t2.micro --force 这将创建集群。 然后我为php和nginx创建docker容器 ecs-cli compose up 这将创建没有任何文件的容器 现在,如果我使用SSH手动登录到EC2实例并创建phpinfo.php文件,
ecs-cli up --keypair my_keypair --capability-iam --size 1 --instance-type t2.micro --force
这将创建集群。
然后我为php和nginx创建docker容器
ecs-cli compose up
这将创建没有任何文件的容器
现在,如果我使用SSH手动登录到EC2实例并创建phpinfo.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
你可以用scp。这使用ssh以一种更易于自动化的方式复制文件
scp file <sshtarget>:/path/to/file
scp文件:/path/to/file
如果您愿意更改部署过程,可以改用CloudFormation模板
描述如何部署已包含文件的ec2实例。(查看步骤2下的“文件”部分)您可以使用scp。这使用ssh以一种更易于自动化的方式复制文件
scp file <sshtarget>:/path/to/file
scp文件:/path/to/file
如果您愿意更改部署过程,可以改用CloudFormation模板
描述如何部署已包含文件的ec2实例。(请参阅步骤2下的“文件”部分)因为您使用的是ECS—弹性容器服务—您需要首先对应用程序进行Dockerize,然后将生成的Docker映像上载到:弹性容器注册表 为此,您需要进入EC2容器服务->注册表并为您的容器创建一个存储库。然后进行配置 在源代码中,您需要有一个构建容器的Dockerfile:从基本图像开始,然后添加源代码到容器中 一旦你有了它,你要么需要让你的构建服务器构建并推送docker容器,要么就从你的机器上手动完成 您将设置为使用ECR中的docker映像,当您将docker推送到ECR时,您将“更新”任务定义,以便它获取最新版本的docker容器
您可以在启动时通过aws cli、通过web控制台本身(单击)或通过一些基础架构配置工具(如Cloudformation或Terraform)设置ECS和ECR。无论您需要什么样的浮动方式…因为您使用的是ECS(弹性容器服务),所以您需要首先对应用程序进行Docker化,然后将生成的Docker映像上载到:弹性容器注册表 为此,您需要进入EC2容器服务->注册表并为您的容器创建一个存储库。然后进行配置 在源代码中,您需要有一个构建容器的Dockerfile:从基本图像开始,然后添加源代码到容器中 一旦你有了它,你要么需要让你的构建服务器构建并推送docker容器,要么就从你的机器上手动完成 您将设置为使用ECR中的docker映像,当您将docker推送到ECR时,您将“更新”任务定义,以便它获取最新版本的docker容器
您可以在启动时通过aws cli、通过web控制台本身(单击)或通过一些基础架构配置工具(如Cloudformation或Terraform)设置ECS和ECR。无论你需要什么,都可以通过使用S3 bucket轻松实现。请遵循以下步骤:
好的方面是s3sync命令只上传/下载增量文件。因此,如果您只修改一个文件并执行上述命令,那么只有修改后的文件才会上载到S3并下载到EC2。您可以通过使用S3 bucket轻松实现这一点。请遵循以下步骤:
好的方面是s3sync命令只上传/下载增量文件。所以,如果您只修改一个文件并执行上述命令,那么只有修改后的文件才会上载到S3并下载到EC2。为什么要否决投票?我面临一个问题,为什么要否决投票?我面临一个问题,需要帮助,但这是标准流程吗?这就是DevOp专家部署项目的方式吗?我想知道哪个对我更重要。我可以很容易地编写一个复杂的shell脚本,它可以实现所有功能,但我需要知道专业人员是如何做的,所以不要忘记,EC2实例的ip地址可以更改。毕竟它是无状态的。@Sallu有可能将应用程序容器化吗?或者你愿意改用CloudFormation吗?在我的工作中,我们在构建管道中使用脚本的组合(比如jenkins)