Skip to content

codingsimul/Docker-CodeDeploy

Repository files navigation

docker-codeDeploy

EC2 - Java 17, CodeDepoly Agent, aws-ecr-credential-helper 설치

flow.jpg sudo apt update &&
sudo apt install -y ruby-full wget &&
cd /home/ubuntu &&
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install &&
chmod +x ./install &&
sudo ./install auto

sudo apt-get update &&
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common &&
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - &&
sudo apt-key fingerprint 0EBFCD88 &&
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" &&
sudo apt-get update &&
sudo apt-get install -y docker-ce &&
sudo usermod -aG docker ubuntu &&
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose &&
sudo chmod +x /usr/local/bin/docker-compose &&
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

sudo apt install amazon-ecr-credential-helper

IAM

  • EC2 - S3 읽기 권한, AMAZONEC2ContainerResistryFullAccess
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
  • GITHUB - 사용자 s3FullAccess, CodeDeployFullAccess, AMAZONEC2ContainerResistryFullAccess -> 키 등록
  • CodeDeploy - codeDeployRole

spring boot - workflow.yml, appspec.yml, start-server.sh

CI/CD 순서

  • push - checkout - application.yml 추가 - 빌드및테스트

  • aws 로그인 - ecr-credential 로그인 - 도커 빌드 - 도커 tag 변경 - 도커 푸시

  • 파일이름 변경 및 파일압축 - aws 로그인 - s3에 압축파일 전송

  • code deploy로 ec2에게 배포 명령

추가사항

  • .dockerignore, .gitignore 파일 작성

  • auto-scaling

  • 시작템플릿 생성 - EC2랑 동일하게 + 사용자데이터 작성
#!/bin/bash
# === 1. CodeDeploy Agent 설치 ===
sudo apt update -y && \
sudo apt install -y ruby-full wget && \
cd /home/ubuntu && \
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install && \
chmod +x ./install && \
sudo ./install auto

# === 2. Docker & Docker Compose 설치 ===
sudo apt-get update -y && \
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo apt-key fingerprint 0EBFCD88 && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
sudo apt-get update -y && \
sudo apt-get install -y docker-ce && \
sudo usermod -aG docker ubuntu && \
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# === 3. ECR Credential Helper 설치 ===
sudo apt install -y amazon-ecr-credential-helper

# === 4. Docker config.json 설정 ===
sudo mkdir -p /home/ubuntu/.docker
sudo bash -c 'echo "{\"credsStore\":\"ecr-login\"}" > /home/ubuntu/.docker/config.json'
sudo chown -R ubuntu:ubuntu /home/ubuntu/.docker

# === 5. 서비스 자동 실행 설정 ===
sudo systemctl enable codedeploy-agent
sudo systemctl enable docker
sudo systemctl start codedeploy-agent
sudo systemctl start docker

echo "===== USER DATA SCRIPT COMPLETED SUCCESSFULLY =====" >> /var/log/user-data.log

  • AUTO SCALING GROUP, LOAD BALANCING 생성
  • CodeDeploy 그룹에 블루/그린 배포 + AUTO SCALING GROUP 연결 + LOAD BALANCING 활성화(APPLICATION)
  • IAM 수정
  • CodeDeploy: AutoScalingFullAccess, code-deploy-autoscaling-policy(AMI에 iam 권한, 인스턴스 시작 권한, 태그 생성 권한 부여)
    {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole",
        "ec2:CreateTags",
        "ec2:RunInstances"
      ],
      "Resource": "*"
    }
  ]
}
  • EC2(AMI에 추가): AmazonEC2RoleforAWSCodeDeploy

ELB 암호화

  • 도메인 주소 구매 - AUTO SCALING GROUP 보안그룹 443 추가 - ASG 도메인과 도메인으로 Route53 등록 - ACM 인증서 발급 및 연결

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published