본문 바로가기
AWS CLOUD SERVER 배포 (feat. UBUNTU)

도커 /클라우드서버(AWS lightsail + 우분투 ) 를 이용한 배포 -최종(5)-

by Digital Audio Player 2021. 9. 16.

1. 도커 설치전  (한줄 씩 실행)

sudo apt update

sudo apt install apt-transport-https ca-certificates curl software-properties-common

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

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

sudo apt update

apt-cache policy docker-ce

 

2. 결과 화면 

3. 도커 ce 설치 

sudo apt install docker-ce 

 

4. 설치확인

sudo systemctl status docker

 

 

5. 도커 그룹 만들기 

 

# docker 그룹 만들기

sudo groupadd docker

# 사용자를 docker 그룹에 추가

sudo usermod -aG docker $ USER   (sudo 생략가능해짐)

 

# 도커 버전 확인

docker -v

 

6. 도커에 mysql 설치  (온라인 레포지토리에서 mysql 이미지 pull )

docker pull mysql

 

7. 도커 이미지 목록 확인

 docker images 

 

8. 도커 컨테이너 생성 

 

#1 )  docker network create test  (컨테이너간 통신 네트워크 생성)

#2 )  docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=패스워드 -d -v                     

       /home/docker/mysql/var/lb/mysql:/var/lib/mysql -p 3306:3306 --network test mysql:latest 

 

     * -v 는 " 클라우드 host 서버 경로 : 컨테이너 접속 후 경로  "  이며 이렇게 매핑하면 컨테이너가 제거 되어도 클라우드 host 서버 로컬 경로에 백업되어있기 때문에 똑같은 명령문으로 다시 컨테이너를 생성 해도 db 데이터는 그대로 남아있음 *

 

 

 

9. 컨테이너 목록 

docker ps -a 

      * 위의 status 가 exited 되어 있으면 docker logs [컨테이너 이름 ] 으로 확인 및 검색  , mysql 의 경우 아래와 같은 에러 로그 발생 시 https://junho85.pe.kr/1456 

 

10. mysql 컨테이너 접속 

sudo docker exec -it [컨테이너이름] bash 

mysql -u root -p 

password 는 도커컨테이너 생성 시 지정한 패스워드 

접속성공

 

11. 데이터베이스 (스키마) 및 계정 생성

 

   # 사용자 정보 확인

mysql> SELECT User, Host, authentication_string FROM mysql.user

 

   # board 라는 데이터 베이스 만들고 확인

mysql> CREATE DATABASE board;

mysql> SHOW DATABASES

 

    # board 데이터베이스를 사용할 계정 test1 만들고 확인

mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'mysql비번';

mysql> FLUSH PRIVILEGES;

mysql> SELECT User, Host, authentication_string FROM mysql.user;

   

      #board 데이터베이스를 사용할 계정  test1 에 권한 부여 (test1 사용자정의 계정에서 board 스키마 접근가능)

mysql> GRANT ALL PRIVILEGES ON 데이터베이스이름.* TO 'bbb'@'localhost';

mysql> FLUSH PRIVILEGES;

mysql> SHOW GRANTS FOR'bbb'@'localhost';

mysql> SELECT User, Host, authentication_string FROM mysql.user;​

 

       #test1 계정에 외부 ip 에서 접근가능한 권한 주기  (타 pc 에서 클라우드 서버로 해당계정으로 접근유효)

mysql > create user 'test1'@'%'; 

mysql > grant all privileges on 데이터베이스이름.* TO 'test1'@'%' ;

mysql> FLUSH PRIVILEGES;

mysql> SHOW GRANTS FOR'bbb'@'%';

mysql> SELECT User, Host, authentication_string FROM mysql.user;​

 

 

12.  스키마 접속 및 db 구축 

 

 

 

13. mysql 종료 

mysql > exit ;

ctrl + p  와 ctrl + q 를 누르면 컨테이너에서 host 서버로 빠져나옴

 

 

다음은 스프링부트 프로젝트 빌드 및 도커허브 푸시