0

AWSコードパイプライン、コードビルドを使用して新しいDockerコンテナを作成し、ECRにプッシュします。awakeのドッカーの簡単な連続配信手順

私のアプリケーションは単純な単純なコンテナベースのものです。現在実行中のコンテナをプルダウンし、ECSレジストリから新しいコンテナ(コードビルドからコードパイプラインの出力)を再起動するには、摩擦の少ないアプローチが必要です。

私はEC2ユーザーデータ、カスタムスクリプトを片面に、CloudFormationをECSを使って反対側のタスク定義と共に(まだ成功していない)試してみました。もっと明白で簡単なアプローチが必要だと強く感じています。

答えて

1

aws ecs command-line toolをチェックしましたか?これは、タスクとサービスを更新するための簡単なbashスクリプトを書くことを可能にします:

cluster='<cluster-id>' 
service='<service-id>' 
project='<project-name>' 
elb='<ELB-id>' 

version=$(git rev-parse --short=12 HEAD) 

sed "s#{image}#${repo}:app-${version}#g" ./docker-compose.yml | sed "s#{frontend}#${repo}:frontend-${version}#g" | sed "s#{logger}#${repo}:logger-${version}#g"> /tmp/docker-compose.yml 
ecs-cli compose --file /tmp/docker-compose.yml --project-name ${project} create 

taskDefinition=$(aws ecs list-task-definitions --family-prefix "ecscompose-${project}" --output text --sort DESC | awk '{print $2}' | head -n 1) 

if [[ $(aws ecs list-services --cluster "${cluster}" --output text) =~ ${service} ]]; then 
    aws ecs update-service --cluster "${cluster}" --service ${service} --task-definition "$taskDefinition" >> /dev/null 
else 
    aws ecs create-service --cluster "${cluster}" --service ${service} --task-definition "$taskDefinition" --load-balancers loadBalancerName=${elb},containerName=nginx,containerPort=80 --desired-count 5 --role arn:aws:iam::395910257915:role/ecsServiceRole 
fi 
関連する問題