Docker Image'ı AWS ECR'a Push Etmek: CI/CD İş Akışı
Docker image'ını AWS ECR'a (Elastic Container Registry) göndermek, CI/CD sürecinin temel bir parçasıdır. Yerel olarak oluşturduğun container'ı buluta taşıyarak, ECS ya da Kubernetes gibi orkestrasyon araçlarıyla çalıştırabilirsin.
AWS CLI kurulu olduğunu varsayarak başlayalım. Önce ECR'da bir repository oluştur. AWS Console'dan ya da CLI ile yapabilirsin:
1aws ecr create-repository --repository-name my-app --region us-east-1Komut başarılıysa repository URI'sini göreceksin. Şöyle bir çıktı gelir:
1"repositoryUri": "123456789.dkr.ecr.us-east-1.amazonaws.com/my-app"Şimdi ECR'a login ol. AWS CLI otomatik olarak geçici token oluşturur:
1aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789.dkr.ecr.us-east-1.amazonaws.comBaşarılı login'de "Login Succeeded" mesajı görürsün.
Sonra local image'ını ECR repository URI'sine göre tag'le:
1docker tag my-app:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:latestVe push et:
1docker push 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:latestPush sırasında layer'ların yüklenişini göreceksin. Tamamlandığında ECR Console'da image'ı görebilirsin.
CI/CD pipeline'ında (GitHub Actions, GitLab CI, Jenkins gibi) bu adımları otomatikleştir. AWS credentials'ı environment variable olarak ayarla, sonra aynı komutları çalıştır. Örneğin GitHub Actions'da:
1- name: Push to ECR2run: |3aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin $ECR_REGISTRY4docker tag my-app:latest $ECR_REGISTRY/my-app:${{ github.sha }}5docker push $ECR_REGISTRY/my-app:${{ github.sha }}6env:7ECR_REGISTRY: 123456789.dkr.ecr.us-east-1.amazonaws.comSık yapılan hata: AWS credentials'ı code'a hardcode etmek. Her zaman IAM role ya da secrets manager kullan. Ayrıca, image tag'ine commit hash ya da build number eklemek iyi bir pratiktir; böylece her deploy'da hangi versiyon çalıştığını takip edebilirsin.
0 yorum