[Spring 프로젝트] AWS EC2 배포

heyhey·2023년 3월 21일
0

프로젝트

목록 보기
6/8

실행 순서

EC2 ssh 접속
코드 git clone
docker 설치
jdk 설치
./gradlew clean build
docker build
docker images 확인
docker run
docker ps 확인

메모리 용량 늘려서 쓰기

sudo dd if=/dev/zero of=/swapfile bs=128MB count=32
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s

sudo vi /etc/fstab

여기서 추가
/swapfile swap swap defaults 0 0

Free -h 로 확인

도커 설치

sudo service install docker
sudo service docker start

확인
sudo systemctl status docker

자바 설치

sudo yum install java-11

build.gradle

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.9'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

jar {
	enabled = false
}

application.yml

spring:
  datasource:
#    url: jdbc:mysql://{ec2 public IP}:3306/{DB 이름}
    username: root ( 잘모르겠다면 root)
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto:  update  # 스키마 자동 생성
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true      # SQL 쿼리 출력
    properties:
      hibernate:
        format_sql: true  # SQL pretty print
server:
  port : 8080

빌드

./gradlew clean build 내장 그래들러로 빌드한다.
기존의 이미지를 지우고 새롭게 빌드를 한다.
이때 읽는 파일이 application.yml 이다

도커 빌드

docker build -t {repo:tag} .

도커 이미지 확인

root@ip-172-31-43-211:~/dubu-party# docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
dubu         0.0.1     f65afbfc6587   38 seconds ago   699MB

MYSQL 설치

Mysql 8 버전 이미지를 불러와서
-d 데몬 (백그라운드 작업으로 )
-p 3306 포트로 지정해서 진행한다.

sudo docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root mysql:8.0

도커 실행

docker run -d -p 8080:8080 image:tag

도커 실행 확인

docker ps

database 생성

mysql에서 create database 만들어주기

mysql docker compose

docker-compose.yml 작성

version: '3'
services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    ports:
      - 3306:3306 # HOST:CONTAINER
    environment:
      MYSQL_ROOT_PASSWORD: admin
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - D:/mysql/data:/var/lib/mysql

실행
docker-compose -f docker-compose.yml up -d

느낀점

배포에서 정말 많은 어려움을 느꼈다.
docker의 역할, mysql을 연결하는 과정, mysql이 돌아가고 있는지 확인하는 법
spring이 꺼지는 이유 등을 하나씩 알아가며 배포에 대해 공부를 하게 되었다.
10시간 정도 소요한 것 같은데.. 앞으로 모든 과정에 대해서도 잘 기록하고 이겨내자

profile
주경야독

0개의 댓글