본문 바로가기

IT

리눅스에서 DB 사용 앱을 도커라이즈1(172.17.0.1 이 무엇인가 )

728x90

기본 프로젝트 셋팅 => https://github.com/sh970901/dockerDB

article 회원 엔티티를 생성하고 기본 값으로 두개의 데이터를 넣었다.

initData

정상적으로 셋팅이 되었다면 /getList에 접근하였을때 article의 정보를 json형식으로 출력한다.

/getList

실행이 잘된다면 이제 git clone으로 리눅스 환경에서 위의 프로젝트를 받는다.

git clone

chmod 744 gradlew 로 gradle 실행에 대한 접근권한을 부여한다.

.gradlew clean build로 jar 파일을 생성한다.

이 과정에 대해서는 https://sh970901.tistory.com/60에서 관련 포스팅하였다.

build 과정 실패

build 과정에 실패하였다. 이유가 무엇일까? build를 하면 스스로 테스트를 진행한다. 

test/java/~~/tests

DB가 없기 때문에 build를 실패하였다. build를 하기 위해서는 DB가 필요하다. DB 설치 작업을 진행한다. 

MariaDB 설치

  • sudo yum install mariadb-server -y
  • sudo systemctl enable mariadb
  • sudo systemctl start mariadb

DB가 생성될 때 기본적으로 charset이 utf8mb4가 되도록 설정변경

  • sudo vim /etc/my.cnf.d/mariadb-server.cnf

설정 추가

  • sudo systemctl restart mariadb

보안설정

  • sudo /usr/bin/mariadb-secure-installation

DB 접근

MariaDB 접근

 

마스터계정(lldj 생성) 추가 생성

  • mysql -u root -plldj123414
  • GRANT ALL PRIVILEGES ON *.* TO lldj@'172.17.%.%' IDENTIFIED BY 'lldj123414';
    • 172.17.0.1 만 허용하면, 컨테이너 TO MariaDB 컨테이너 통신은 가능하지만
    • 172.17.0.1 만 허용하면, 컨테이너 TO HOST MariaDB로의 통신은 불가능하다.
    • 그래서 172.17.%.% 도 허용

실행 결과

실행 fail

DB를 설치했지만 build에 실패했다. 그 이유는 프로젝트 내 DB접속 정보와 매치가 안되기 때문이다. application.yml을 수정해주거나 DB 접속 정보를 수정하는 작업이 필요하다. 필자는 간단히 root 계정을 만들고 database를 생성하고 application.yml을 리눅스 DB 설정에 맞춰서 수정했다. 

 

재실행 결과

재실행 결과

build하여 jar파일을 생성하는 것에 성공하였다. 이후에 다시 다운받은 프로젝트를 실행해보자.

https://sh970901.tistory.com/65

 

리눅스에서 DB 사용 앱을 도커라이즈2

sh970901.tistory.com

 

 

 

**참고 1

DB 계정을 생성하고 git에 올려야하는 경우 내 컴퓨터 안쪽에 접근해서 사용할 수 있도록 계정을 생성하는 방법이 있다.

ex)

  • GRANT ALL PRIVILEGES ON *.* TO lldj@'%' IDENTIFIED BY 'lldj123414';
  • GRANT ALL PRIVILEGES ON *.* TO lldjlocal@127.0.0.1 IDENTIFIED BY '1234';
  • GRANT ALL PRIVILEGES ON *.* TO lldjlocal@172.17.0.1 IDENTIFIED BY '1234';

**참고 2

172.17.0.1  

도커 호스트(현재 CentOS)를 말한다.

=> 도커를 설치하면 자동으로 생성되는 IP 

=> 도커 안에 각각의 컨테이너는 172.17.0.2, 172.17.0.3 와 같은 IP를 가지게 된다.

=>  보통 127.0.0.1 하면 자신의 OS를 가르키는데 도커 호스트에서는 자기 자신을 가르치기 때문에 172.17.0.1을 사용하여 바깥쪽에 감싸는 호스트에 접근한다.