공부한 내용
도커로 Redis 컨테이너 사용해 배포 환경에서 Redis 사용
•
docker-compose.yml
◦
atties 프로젝트
version: "3"
services:
redis:
image: redis
container_name: atties_redis
application:
image: atties_spring
environment:
SPRING_DATASOURCE_URL: jdbc:mysql:rdsUrl
SPRING_DATASOURCE_USERNAME: admin
SPRING_DATASOURCE_PASSWORD: 비밀번호
SPRING_REDIS_HOST: "redis"
SPRING_REDIS_PORT: "6379"
restart: always
container_name: atties_spring
ports:
- "80:80"
depends_on:
- redis
C++
복사
◦
beach-combine 프로젝트
version: "3"
services:
redis:
image: redis
container_name: beachcombine_redis
application:
image: beachcombine_spring
environment:
SPRING_DATASOURCE_URL: jdbc:mysql:rdsUrl
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: 비밀번호
SPRING_REDIS_HOST: "redis"
SPRING_REDIS_PORT: "6379"
restart: always
container_name: beachcombine_spring
ports:
- "8080:8080"
depends_on:
- redis
C++
복사
배포 서버에서 로그아웃 테스트
•
위에 docker-compose.yml을 잘 넣었다면 이제 할 일은 끝났다.
•
배포해보자 → 한 방에 성공! ㅠㅠㅠ 이 얼마만에 한방에 된건지..ㅠㅠㅠ 행복하다
◦
.github/workflows/deploy.yml 파일 내 코드
name: Deploy
on:
push:
branches: [ "develop" ]
pull_request: # 원래 이 부분은 주석처리하는데, 지금은 테스트를 위해 주석 해제함
branches: [ "develop" ] # PR에 새 커밋올라왔을 때 배포 진행되게 하는 코드
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
# 기본 체크아웃
- name: Checkout
uses: actions/checkout@v3
# Gradlew 실행 허용
- name: Run chmod to make gradlew executable
run: chmod +x ./gradlew
# JDK 11 세팅
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
# 환경 변수 설정
- name: Set environment values
run: |
cd ./src/main/resources
touch ./env.properties
echo "${{ secrets.ENV }}" > ./env.properties
shell: bash
# 환경 변수 설정 (JSON)
- name: create-json
id: create-json
uses: jsdaniell/create-json@v1.2.2
with:
name: "beach-combine-3770712535c0.json"
json: ${{ secrets.BEACHCOMBINE }}
dir: 'src/main/resources/'
# Gradle build (Test 제외)
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: clean build -x test
# Docker build
- name: Docker build
run: |
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}
docker build -t beach_combine .
docker tag beach_combine choo000407/beach_combine:${GITHUB_SHA::7}
docker push choo000407/beach_combine:${GITHUB_SHA::7}
# Deploy
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: 35.216.84.77
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
envs: GITHUB_SHA
script: |
sudo docker pull choo000407/beach_combine:${GITHUB_SHA::7}
sudo docker tag choo000407/beach_combine:${GITHUB_SHA::7} beachcombine_spring
sudo docker-compose up -d
C++
복사
•
최종 배포
◦
ddl-auto create에서 none으로 바꾸기
▪
initDB 때문에 ddl-auto none으로 하면 배포가 제대로 안됨. 해결법 찾기. 일단은 create으로 해줘서 해결함. 사실 시연용으로만 쓸거라 큰 문제는 없을 거 같음. 허나, 운영할 서비스였다면 큰 문제였을 것.
▪
교훈) 처음부터 none으로 하쟈,,,,
하루 정리
TIL 작성하기
GDSC
6시 실습 멘토
BeachCombine
로그아웃 기능 배포하기 (배포 환경에 Redis 도입)