mun dev

[Docker] SpringBoot 프로젝트 Docker로 배포하기(1) 본문

공부/Docker

[Docker] SpringBoot 프로젝트 Docker로 배포하기(1)

mndev 2023. 6. 2. 10:43

1. 네이버 클라우드 플랫폼 서버키 다운로드, 포트포워딩

네이버 클라우드 플랫폼을 사용하여 배포를 하려고 한다.

먼저 네이버 클라우드 플랫폼에서 서버키 다운로드와 포트포워딩을 설정해준다.

  • 80번포트 / 0.0.0.0/0
    • HTTP, 웹서비스용 포트
  • 81번포트 / 0.0.0.0/0
    • NGINX PROXY MANAGER 관리용 포트
  • 443번포트 / 0.0.0.0/0
    • HTTPS, 웹서비스용 포트
  • 22번포트 / MyIP
    • 리눅스 원격접속용 포트, 개발자 본인만 접속하면 되니까 MyIP
  • 3306번포트 / MyIP
    • 리눅스에 설치된 MySQL 관리용 포트, 개발자 본인만 접속하면 되니까 MyIP

내 ip에 해당하는 포트포워딩과 서비스용 관리용등 포트를 설정해준다.


2. SSH 접속

  • ssh -p {서버 접속용 포트} {서버 접속용 공인 IP}

3. yum 최신화, yum update

  • yum install epel-release -y
  • yum update -y

4. 도커 설치

# Uninstall old versions
# 혹시 모르니 기존의 오래된 도커를 삭제하는 명령을 수행
yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

# Set up the repository
yum install -y yum-utils

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# Install Docker Engine
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 도커 시작
systemctl start docker

# 도커 활성화
systemctl enable docker

# 도커 작동 테스트
docker run hello-world

5. MariaDB 설치

# 컨테이너 실행
docker run \
  --name mariadb_1 \
  -d \
  --restart unless-stopped \
  -e MARIADB_ROOT_PASSWORD=설정할 비밀번호 \
  -e TZ=Asia/Seoul \
  -p 3306:3306 \
  -v /docker_projects/mariadb_1/conf.d:/etc/mysql/conf.d \
  -v /docker_projects/mariadb_1/mysql:/var/lib/mysql \
  -v /docker_projects/mariadb_1/run/mysqld:/run/mysqld/ \
  mariadb:latest

6. 보안설정

  • docker exec -it mariadb_1 /usr/bin/mariadb-secure-installation

Enter current password for root (enter for none):

root 계정 패스워드(비밀번호) 입력

Switch to unix_socket authentication [Y/n] n

Change the root password? [Y/n] n

나머지 Y

설치완료


7. 마스터계정(master 생성) 및 DB 생성

docker exec -it mariadb_1 mysql -u root -p

GRANT ALL PRIVILEGES ON *.* TO master@'%' IDENTIFIED BY '비밀번호';

# master 계정이 아이디와 비번만 알면 어디서든 접속이 가능하도록 설정

GRANT ALL PRIVILEGES ON *.* TO masterlocal@127.0.0.1 IDENTIFIED BY '1234';

# master 계정이 MariaDB 컨테이너에서만 접속 가능하도록 허용

GRANT ALL PRIVILEGES ON *.* TO masterlocal@'172.17.%.%' IDENTIFIED BY '1234';

# master 계정이 같은 도커 호스트를 공유하는 컨테이너에서 접속 가능하도록 허용

CREATE DATABASE nginx;

# NGINX PROXY MANAGER 를 위함

exit

8. gram__prod DB 생성

  • docker exec -it mariadb_1 mysql -u root -q비밀번호;
  • CREATE DATABASE gram__prod;
  • exit;

9. git 설치

  • yum install git -y