티스토리 뷰

728x90

https://sh970901.tistory.com/62

 

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

기본 프로젝트 셋팅 => https://github.com/sh970901/dockerDB article 회원 엔티티를 생성하고 기본 값으로 두개의 데이터를 넣었다. 정상적으로 셋팅이 되었다면 /getList에 접근하였을때 article의 정보를 jso..

sh970901.tistory.com

이전에 github에서 프로젝트를 받아 build하는 작업까지 진행하였다. DB 설정 문제때문에 이를 해결하는데 성공하였다.

이번에는 프로젝트를 정상적으로 수행해보도록 하자.

build success

Dockerfile 생성

빌드에 성공하였으니 이제 도커파일을 만든다. 도커파일에 관련해서는 이전 포스팅한 내용을 참고하도록 하자.

  • vim Dockerfile
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=build/libs/프로젝트명-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]

도커 이미지 생성

  • docker build -t sbdb .

이미지 생성

sbdb 이미지 실행 

docker run \
  --name=sbdb_1 \
  -p 8080:8080 \
  -d \
  sbdb

도커 컨테이너 실행

실행은 문제없이 잘되는것 처럼 보이는데  컨테이너가 몇 초 안지나서 자동으로 종료된다. -d 설정을 빼고 오류를 확인해보았다. 

error 코드

아하... 172.17.0.2는 컨테이너의 IP인 것을 알 수 있다. centOS 안에 mysql과 docker가 있고 docker안에 컨테이너가 돌아가고 있는데 컨테이너에서 실행되는 프로젝트가 밖에 있는 mysql을 사용하려하는데 mysql이 그것을 허용해주지 않았다.

 

설정 파일에 등록된 디비와 같은 계정을 수동으로 생성하고 권한을 부여한다.

  • GRANT ALL PRIVILEGES ON *.* TO [계정]@'172.17.%.%' IDENTIFIED BY '[passwd]';
  • 운영 DB를 생성해서 확인해본다. 
CREATE DATABASE DB명;

USE DB명;

CREATE TABLE `article` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `subject` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

insert  into `article`(`id`,`subject`) values 
(1,'제목1'),
(2,'제목2');

이제 컨트롤러에서 정의된 article에 대한 List를 확인해보도록 하자.

ActicleController

/getList로 접속하면 정상적으로 DB에 등록한 artricle에 대한 정보를 확인할 수 있다.

실행 결과

 

이번에 컨테이너가 172.17.0.2를 가지는 것을 직접 확인 할 수 있었다. 컨테이너에서 로컬은 도커호스트(자신)를 가르켜서 172.17.0.1로 접근 해야 바깥 OS에 접근할 수 있다고 전에 공부해 포스팅했는데 이번에 DB를 통해서 직접 컨테이너가 접근하는 IP를 확인할 수 있었다.  

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함