프로젝트를 진행하면서 팀원들에게 EC2와 고정 IP 할당을 통하여 클라우드를 사용하여 쉽게 배포할 수 있는 방법을 공유하기 위하여 작성을 하였습니다.
Docker Composse를 이용하여 여러개의 도커 컨테이너로 부터 이루어진 서비스를 구축 및 네트워크 연결, 실행 순서를 자동으로 관리가 가능하여 일관성을 가지는 환경을 구축할 수 있다.
docker-compose.yml 파일을 작성하여 1회 실행하는 것으로 설정된 모든 컨테이너를 실행한다.
일단 배포를 시작하기 이전에 docker-compose.yml에 대하여 설명을 하겠습니다.
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
[mysqldump]
default-character-set=utf8mb4
1-3. Dockerfile
FROM mysql:8.0.22
ENV TZ=Asia/Seoul
FROM redis:6
ENV TZ=Asia/Seoul
FROM openjdk:11
ARG JAR_FILE=build/libs/app.jar
COPY ${JAR_FILE} ./app.jar
ENV TZ=Asia/Seoul
ENTRYPOINT ["java","-jar","./app.jar"]
version: "3.8"
services:
study-redis:
container_name: study-redis
build:
dockerfile: Dockerfile
context: ./redis
image: immunogen/study-redis
ports:
- "6379:6379"
study-database:
container_name: study-database
build:
dockerfile: Dockerfile
context: ./database
image: immunogen/study-database
environment:
- MYSQL_DATABASE=CStudy
- MYSQL_ROOT_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
volumes:
- ./database/config:/etc/mysql/conf.d
ports:
- "3306:3306"
study-app:
container_name: study-app
build: .
depends_on: # DB, REDIS 컨테이너가 실행된 다음 WEB을 실행시킨다.
- study-database
- study-redis
image: immunogen/study-app
environment:
- SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
- SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
- SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE}
ports:
- "80:8080"
restart: always
bootJar{
archiveFileName = 'app.jar'
}
#Perform a quick update on your instance:
$ sudo yum update -y
#Install git in your EC2 instance
$ sudo yum install git -y
#Check git version
$ git version
//도커 설치
$ sudo yum install docker
$ docker -v
// 도커 컴포즈 설치
$ sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
// 도커 시작하기
$ sudo systemctl start docker
// 실행 권한 적용
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo chmod 666 /var/run/docker.sock
$ sudo dnf install libxcrypt-compat
$ docker-compose -v
$ git clone https://github.com/CStudyTeam/CStudy-backend.git
$ vi .env
SPRING_DATASOURCE_USERNAME=root
SPRING_DATASOURCE_PASSWORD=1234
$ docker-compose config
# aws coreetto 다운로드
$ sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm
# jdk11 설치
$ sudo yum localinstall jdk11.rpm
# 권한
chmod +x gradlew
# 테스트 케이스 제외하고, jar 파일 빌드만 진행
$ ./gradlew clean build -x test
$ docker-compose up --build
글 잘 봤습니다.