드디어 대망의 CD 구현하기다.
우선 알아야 하는 것이
DockerHub와 이미지
docker-compose
.env 파일
Dockerfile
깃허브 액션 yml
코드로 보자
# DockerHub 로그인
- name: DockerHub Login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# Docker 이미지 빌드
- name: Docker Image Build
run: docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }} .
# DockerHub Push
- name: DockerHub Push
run: docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}
- name: Deploy to server
uses: appleboy/ssh-action@master
id: deploy
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_KEY }}
envs: GITHUB_SHA
script: |
sudo docker rm -f $(docker ps -qa)
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}
docker-compose up -d
docker image prune -f
DockerHub에 로그인 후 빌드, 그리고 푸쉬를 한다.
기본적으로 docker에서 pull 받을 때 태크는 latest를 사용한다.
그래서 Docker 레포지토리는
username/repository:latest 로 설정
그리고 EC2로 로그인한다
저 Host는 Ipv4 퍼플릭 주소를 입력해주면 되고 Key는 발급 받은 pem 안의 내용을 전부 넣어주면 된다.
sudo docker rm -f ~~~
돌아가던 도커를 죽인다
sudo docker pull ~~
docker hub 레포지토리에서 이미지를 pull 받는다.
docker-compose up -d
docker-compose 라는 파일을 백그라운드로 실행시킨다.
docker image prune -f
사용하지 않는 도커 컨테이너를 삭제 시킨다.
그래서 저 docer-compose 가 뭐냐!
docer-compose
version: "3.8"
services:
your-services-name:
image: your/repository
restart: always
container_name: your-container-name
env_file:
- your.env
ports:
- yout:port
안에는 이런 식으로 적혀져있다
이거를 EC2 내에 넣어주면 된다.
사용자 이름이 ubuntu면 ubuntu 안에다 따로 폴더에 넣고 싶다면 넣어도 되는데 위의 액션 코드에서 -f 로 위치를 지정해줘야 된다.
저 your.env가 뭐냐!
.env
환경변수를 모아놓는 파일이다.
안에는
key=keykey
name=zz
이런 식으로 적혀있는데 docker에다가 환경변수를 설정해주는 것
Dockerfile
Dockerfile은 프로젝트 루트에 위치하게 하면 되는데
FROM openjdk:17 as build
ARG JAR_FILE=/build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=aws","/app.jar"]
이런 식으로 설정하면 jdk17로 빌드하고
profile을 aws로 실행해서 빌드하게 해준다.
'TIL' 카테고리의 다른 글
TIL 2024-01-05 cicd는 왜 생겼을까 (0) | 2024.01.06 |
---|---|
TIL 2024-01-04 SQL에 배열을 어떻게 저장할까? (0) | 2024.01.05 |
TIL 2024-01-02 깃 액션으로 CI 하기 (0) | 2024.01.03 |
TIL 2023-12-31 통합 테스트 환경변수 오류 날 때 환경변수 자동 설정하기 (0) | 2023.12.31 |
TIL 2023-12-29 CI/CD 흐름 (0) | 2023.12.30 |