gradle build (스프링 프로젝트 jar file 빌드)
Docker build (Docker Hub에 이미지 push)
Deploy (리눅스 서버에서 Docker Hub에 올린 이미지 pull 받고 run)
name: Java CI with Gradle
on:
push:
branches: [ "master" ]
# pull_request:
# branches: [ "master" ]
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
## 1) git ignore에 등록된 application.properties 파일 생성해주기
- name: make application.properties
run: |
cd ./src/main/resources
touch ./application.properties
echo "${{ secrets.PROPERTIES }}" > ./application.properties
shell: bash
## 2) 스프링 프로젝트 jar 파일 빌드
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
## 3) Docker Hub에 이미지 push 하기
- name: Docker build
run: |
docker login -u ${{ secrets.USERNAME }} -p ${{ secrets.PASSWORD }}
docker build -t mung-friend .
docker tag mung-friend souliat/mung-friend:${GITHUB_SHA::7}
docker push souliat/mung-friend:${GITHUB_SHA::7}
## 4) Docker Hub에 Push한 이미지를 리눅스 서버에 받아와서 run
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ec2-3-39-6-175.ap-northeast-2.compute.amazonaws.com
username: ec2-user
key: ${{ secrets.PRIVATE_KEY }}
envs: GITHUB_SHA
script: |
docker pull souliat/mung-friend:${GITHUB_SHA::7}
docker tag souliat/mung-friend:${GITHUB_SHA::7} mung-friend
docker stop server
docker run -d --rm --name server -p 80:8080 mung-friend
스프링 프로젝트에서 git bash 시작하고 docker hub에 이미지 업로드 할 때 로그인 먼저 해야함
github actions 에서 gradle.yml 파일 작성 시
주의할 점: docker build run에서 (스크립트 명령어) 여러줄 입력할 때 | 입력해줘야함....
# ec2 리눅스 서버에서 도커 환경설정
sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
# 도커 이미지 가져오기
sudo docker pull [계정명]/spring-cicd
# 혹은
sudo docker pull [계정명]/spring-cicd:[최신버젼]
# 도커 이미지 삭제하기 (전체 삭제)
docker system prune -a
# 도커 실행하기
docker run -d -p 80:8080 [계정명]/spring-cicd:[버젼]
# 도커 로그 확인
docker logs [컨테이너id]
중간에 Docker run 명령어를 통해 컨테이너를 만들면, 생성되었다가 자꾸 사라지는 이상한 현상이 나타났는데, 다행히 도커 로그를 확인해보며 문제점을 파악했고 고칠 수 있었다. 소중한 로그..
리눅스 서버에 공개키 저장하여 접근하기
# 1. 프로젝트 디렉에 RSA 키 만들어주고 (꼭 프로젝트 디렉 아니어도됨.)
ssh-keygen -t rsa -b 4096 -C "[내메일]" -f spring-cicd
# 2. 인스턴스(리눅스서버)에 공개키 등록
공개키를 등록할 때는 아래의 파일을 열어 삽입해 주면 된다.
$ vi ~/.ssh/authorized_keys
a 누르면 수정 가능한 상태로 바뀌며, 개행하여 위에서 생성한 RSA 공개키를 등록한다
종료하고 싶다면 :x
# 3. 깃허브 Settings - Secrets - actions에 PrivateKey 등록하기
여기에선 New Repository Secret 클릭하여 RSA 개인키 내용 전부 복붙!
도커 명령어 정리
스프링 프로젝트에서 git bash 시작하고 docker hub에 이미지 업로드 할 때 로그인 먼저 해야함
로그인 시 TTY 오류가 뜬다
as-is : docker login
to-be: winpty docker login
-> "winpty" enables TTY on Window. Useful for GitBash, Putty and MobaXTerm!
github actions 에서 gradle.yml 파일!
주의) docker build run에서 여러줄 입력할 때 | 입력해줘야함....
ec2 리눅스 서버에서 도커 환경설정
sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
출처: https://itcoin.tistory.com/685?category=769089 [ITcoin:티스토리]
도커 이미지 가져오기
sudo docker pull [계정명]/spring-cicd
혹은
sudo docker pull [계정명]/spring-cicd:[최신버젼]
도커 이미지 삭제하기 (전체 삭제)
docker system prune -a
도커 실행하기
docker run -d -p 80:8080 [계정명]/spring-cicd:[버젼]
도커 로그 확인
docker logs [컨테이너id]
1. 프로젝트 디렉에 RSA 키 만들어주고
ssh-keygen -t rsa -b 4096 -C "[내메일]" -f spring-cicd
2. 인스턴스(리눅스서버)에 공개키 등록
공개키를 등록할 때는 아래의 파일을 열어 삽입해 주면 된다.
$ vi ~/.ssh/authorized_keys
a 누르면 수정 가능한 상태로 바뀌며, 개행하여 위에서 생성한 RSA 공개키를 등록한다
저장 후 종료하고 싶다면 :wq
3. 깃허브 Settings - Secrets - actions에 PrivateKey 등록하기
여기에선 New Repository Secret 클릭하여 RSA 개인키 내용 전부 복붙!
--- 여기까지가 GithubActions를 사용하여
푸시할 경우
자동 빌드,
도커 이미지 도커 허브에 등록,
도커 띄운 서버에 자동 배포
까지 완료한 것이다.
**application-alpha.properties
spring.config.activate.on-profile=alpha
spring.redis.host=redis
spring.redis.port=6379
//실시간으로 CPU 메모리 사용량 조회
top
// 리눅스 메모리 전체 용량 조회
cat /proc/meminfo | grep MemTotal
// 리눅스 메모리 사용량 조회
free -h
# 볼륨 리스트 확인하기
docker volume ls
# 볼륨 생성하기
docker volume create 볼륨명
# 볼륨 상세 조회하기
docker volume inspect 볼륨명
** 도커에서 redis cli 접속하는 명령어!!!!!
docker run -it --link redis:redis --rm redis redis-cli -h redis -p 6379
// 도커에서 레디스 쉘 열기
docker exec -it redis /bin/bash
// 도커 현재 용량 조회
docker system df --verbose
// 전체 키 조회
keys *
// 해당 키로 필드 전체 조회
hgetall {key}