상세 컨텐츠

본문 제목

깃액션 CI/CD

기술정리

by 승학이 2024. 2. 9. 16:39

본문

깃액션 CICD 정리

  • 스크립트 파일
    1. ec2에 도커, 도커 컴포스 설치
    2. GitHub-Actions 스크립트 파일 생성 -> GitHub-actions.yml 코드 작성
    3. GitHub-Actions의 secrets에 값을 설정해야함 -> Settings > Secrets > Actions > New repository secret(도커 계정 패스워드, 도커 레포지토리, 도커 ID, dev 환경의 ec2 인스턴스 ip, prod 환경의 ec2 인스턴스 ip, ec2 인스턴스 패스워드, application-dev.yml, application-prod.properties, ec2인스턴스 계정 ID) ->secrets.USERNAMEsecrets.PASSWORD 의 경우 EC2에서 따로 설정이 필요
    • DOCKER_PASSWORD: 도커 계정 패스워드
    • DOCKER_REPO: 도커 레포지토리
    • DOCKER_USERNAME: 도커 ID
    • HOST_DEV: dev 환경의 EC2 인스턴스 ip
    • HOST_PROD: prod 환경의 EC2 인스턴스 ip
    • PASSWORD: EC2 인스턴스 패스워드
    • PROPERTIES_DEV: application-dev.properties 파일 내용
    • PROPERTIES_PROD: application-prod.properties 파일 내용
    • USERNAME: EC2 인스턴스 계정 ID(ec2-user)
     

위에서 HOST_PROD 및 HOST_DEV의 값은 EC2 인스턴스의 IP를 설정하시면 됩니다.

저같은 경우는 아래 파란색 네모친 값을 복사해서 붙여넣어주었습니다.

  • ~~~.ap-northeast-2.compute.amazonaws.com

 

secrets.USERNAMEsecrets.PASSWORD 의 경우 EC2에서 따로 설정이 필요합니다.

  1. dockerfile설정
  2. GitHub-Actions 테스트 해주는 파일 -> docker-compose.yml
  3. Spring Boot LogBack을 통해 로그 파일 남기기
  4. logback 설정 파일에서 로그를 남길 파일의 경로를 도커 컨테이너 기준으로 설정

 

트러블 슈팅

  1. 도커 아이디는 그냥 docker hub 로그안힐때 도커 아이디와 도커 비밀번호 입력해주면 된다.
  2. 도커 레포 이름은 shallweshallwe/shallwe-dev이렇게 있다면 shallweshallwe(도커 허브 프로필 아이디)를 입력해주면 된다.
  3. 도커와 도커 컴포즈를 dev서버에 설치해야한다.

참고 레퍼런스

 

[Docker-Compose] 도커 컴포즈 설치 및 사용

이번 포스팅은 도커 컴포즈 설치와 사용방법 등을 다룬 내용입니다. 도커 설치 - 도커 컴포즈 설치 전, 도커를 설정하고 사용방법을 아래 포스팅을 통해 익힌다. - 도커 설치 포스팅 : https://soyoung

soyoung-new-challenge.tistory.com

  1. 도커 컴포즈를 설치했다면 docker.compose.yml파일을 넣어줘야 되는데 도커 컴포즈를 설치한 ec2에서 파일 주입이 가능하다. (도커 컴포즈 확인 명령어 → docker-compose config)
  • 도커 컴포즈 파일 주입

1. touch 명령을 사용하여 빈 파일 생성

 

2. nano 텍스트 편집기를 사용하여 파일 생성 및 편집

이 명령을 실행한 후 텍스트 편집기가 열릴 것입니다. 내용을 작성하고 저장하려면 **Ctrl + O**를 누르고, 종료하려면 **Ctrl + X**를 누르세요.

 

3. vim 텍스트 편집기를 사용하여 파일 생성 및 편집:

 

Vim을 사용할 때, 편집 모드로 들어가려면 i 키를 누르고, 편집 모드에서 나와 저장하려면 Esc 키를 누르고 **:wq**를 입력하면 됩니다.

 

텍스트 편집기의 선택은 개인의 취향에 따라 다릅니다. 사용하기 편한 편집기를 선택하여 docker-compose.yml 파일을 생성하고 편집하세요. 생성 후에는 Docker Compose 구성을 해당 파일에 입력하면 됩니다.

 

  • 도커 컴포즈 파일 수정할 경우
    1. docker-compose.yml 파일을 처음 생성한 경우:
      • docker-compose up 명령을 처음 실행하면 관련된 모든 서비스와 컨테이너가 생성되고 시작됩니다.
    2. 기존의 docker-compose.yml 파일을 수정한 경우:
      • docker-compose up -d: 이 명령을 실행하면 변경된 구성에 따라 필요한 서비스를 재시작합니다. d 플래그는 "detached mode"를 의미하며, 백그라운드에서 서비스를 실행하게 됩니다.
      • 만약 특정 서비스의 이미지나 구성이 변경된 경우, docker-compose up -d 명령은 해당 서비스를 자동으로 재빌드 및 재시작해 줍니다.
    3. AWS EC2 인스턴스에서 실행 중인 경우:
      • EC2 인스턴스나 Nginx, Docker, Docker Compose 자체를 재시작할 필요는 일반적으로 없습니다. 단지 docker-compose 명령을 사용하여 관련 서비스를 재시작하면 됩니다.
    결론적으로, docker-compose.yml 파일의 변경 내용만 반영하려면 docker-compose 명령만을 사용하여 서비스를 관리하면 되며, 전체 시스템이나 Docker 자체를 재시작할 필요는 없습니다.
  • docker-compose.yml 파일을 새로 생성하거나 수정한 경우에 대한 대응 방법은 변경의 내용과 의도에 따라 다릅니다.
  1. 젠킨스와 비교한다면 깃허브액션이 그냥 젠킨스 서버라고 생각하면 된다. 즉 기존의 ci/cd처럼 dev서버에는 도커를 설치하고 nginx를 구축하면 된다.
  2. secrets.USERNAME는 ubuntu를
  3. **secrets.PASSWORD의 경우에는 따로 설정이 필요하다.**

참고 레퍼런스

 

[AWS]EC2- ubuntu 계정 초기 비밀번호

AWS ec2에서 ubuntu 서버를 만들면, 제일 처음 private key로 접속하게 될 것이다. 접속하면 username에 ubuntu를 입력하면 접속이 된다. private key로 접속하였기 때문에 ubuntu 나 root 계정의 password는 따로 없

serina-the-best.tistory.com

ec2에서 ubuntu 비밀번호 설정을 확인하고 싶으면 터미널창에 ssh 뒤에

에 퍼블릭 ipv4를 붙혀넣으면

이런 문구를 확인할 수 있다.

추가로 host dev는 ec2 ip를 집어넣어야 하는데, 위에 사진에 퍼블릭 ipv4를 집어넣어야 한다.

  1. 이렇게 설정을 마치고 도커 컨테이너 로그를 확인해보니까

Property 'spring.profiles.include' imported from location 'class path resource [application-dev.yml]' is invalid in a profile specific resource [origin: class path resource [application-dev.yml] from app.jar - 5:14]

이런 오류가 떴는데, 이것은 yml파일에

 

를 추가하지 않았기 때문이다. yml파일이 바뀌면 action에 키도 항상 업데이트 해줘야한다.

'기술정리' 카테고리의 다른 글

냉집사 Query Dsl 정리  (1) 2024.02.09
NGINX  (0) 2024.02.09
데이터 접근 기술 - 테스트  (2) 2024.02.05
MyBatis  (0) 2024.02.02
Jdbc Template  (0) 2024.02.02

관련글 더보기