본문 바로가기
웹서비스 개발/Survey Blue

EC2를 통한 서버배포 - Docker에 DB 설치

by 후닝훈 2021. 12. 9.
반응형

앞선 글은 EC2와 RDS를 연결하여 EC2는 리액트 프론트 서버를, 데이터 베이스는 RDS에서 사용할 수 있다.

RDS 사용이 어려울 경우, EC2에서 Docker을 설치하여 Database를 사용할 수 있다.

 

 

AWS EC2에 도커(Docker)를 설치

- Git Bash에서 ssh로 접속하여 진행하였다.

 

1. 최신 버전으로 패키지 업데이트

sudo apt-get update

 

2. 도커 다운로드를 위한 필요한 패키지 설치

sudo apt-get install apt-transport-https // 패키지 관리자가 https를 통해 데이터 및 패키지에 접근할 수 있도록 해준다.
sudo apt-get install ca-certificates // certificate authority에서 발행되는 디지털 서명. SSL 인증서의 PEM 파일이 포함되어 있어 SSL 기반 앱이 SSL 연결이 되어있는지 확인할 수 있다.
sudo apt-get install curl // 특정 웹사이트에서 데이터를 다운로드 받을 때 사용한다.
sudo apt-get install software-properties-common // *PPA를 추가하거나 제거할 때 사용한다.

 

3. curl 명령어로 도커의 공식 GPG 키를 추가 및 확인

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo apt-key fingerprint 0EBFCD88

 

 

4. 도커의 저장소 추가, 등록

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

 

5. 최신 버전으로 패키지 업데이트

sudo apt-get update

 

6. 도커 설치 및 실행

sudo apt-get install -y docker-ce
sudo usermod -aG docker ubuntu

 

7. 도커 compose 설치

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

8. 권한 설정 해주기

sudo chmod +x /usr/local/bin/docker-compose

 

9. 링크 파일 생성

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 

 

Docker-compose.yml을 통하여 MariaDB 설치

 

1. docker 디렉토리 생성 및 vi 편집기를 통한 docker-compose.yml 생성

mkdir docker
cd docker
vi docker-compose.yml

 

2. docker-compose.yml 작성

version: '3'
services:
  local-db:
    image: mariadb:latest
    container_name: surveyblue # 컨테이너 이름
    restart: always
    ports:
      - 63306:3306 # 로컬의 63306 포트를 컨테이너의 3306포트로 연결
    environment:
      MYSQL_USER: hoony
      MYSQL_PASSWORD: hoony
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Seoul
    volumes:
	  - ~/docker/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro 
	  - ~/docker/mariadb/var/lib/mysql:/var/lib/mysql 
	  - ~/docker/mariadb/var/log/maria:/var/log/maria

추가적으로 MySQL 설치는 아래와 같다.

version: '3'
services:
  local-db:
    image: library/mysql:5.7
    container_name: surveyblue
    restart: always
    ports:
      - 63306:3306 
    environment:
      MYSQL_USER: hoony
      MYSQL_PASSWORD: hoony
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Seoul
    volumes:
      - ./db/mysql/data:/var/lib/mysql
      - ./db/mysql/init:/docker-entrypoint-initdb.d

 

3. docker-compose.yml 실행

sudo docker-compose up -d

 

 

MariaDB 설정

 

 

1. 컨테이너에 접속 및 Mysql 접속

docker exec -it [컨테이너 이름] bash
mysql -u root -p

 

2. 미리 생성한 user를 확인 후 권한부여

mysql> use mysql;
mysql> select user, host from user;
mysql> grant all privileges on *.* to 'hoony'@'%'; # 권한 부여
mysql> flush privileges; # 권한 적용

 

 

3. 한글 DB 사용을 위한 utf8 설정

mysql> CREATE DATABASE [db_name] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 

4. mariadb에 접속

mysql> use [db_name];

 

 

cf) container를 삭제해야 한다면 아래와 같은 명령어를 사용한다.

 

1. 컨테이너 확인

$ docker ps -a

 

2. 삭제할 컨테이너 정지 및 삭제

$ docker-compose stop
$ docker-compose rm

 

 

Typeorm.js 수정 및 Backend 서버 실행

 

const SnakeNamingStrategy = require("typeorm-naming-strategies").SnakeNamingStrategy

module.exports = {
    "type": "mariadb",
    "host": "localhost",
    "port": 63306,
    "username": "hoony",
    "password": "hoony",
    "database": "surveyblue",
    "synchronize": true,
    "logging": false,
    "entities": [
        "src/entity/**/*.ts"
    ],
    "migrations": [
        "src/migration/**/*.ts"
    ],
    "subscribers": [
        "src/subscriber/**/*.ts"
    ],
    namingStrategy: new SnakeNamingStrategy()
}

- 위와같이 port와 username, pw, database를 수정해주면 정상적으로 백엔드 서버가 작동한다.

 

반응형

'웹서비스 개발 > Survey Blue' 카테고리의 다른 글

Amazon AWS EC2 / RDS  (0) 2021.07.11

댓글