728x90
https://sh970901.tistory.com/62
이전에 github에서 프로젝트를 받아 build하는 작업까지 진행하였다. DB 설정 문제때문에 이를 해결하는데 성공하였다.
이번에는 프로젝트를 정상적으로 수행해보도록 하자.
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 설정을 빼고 오류를 확인해보았다.
아하... 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를 확인해보도록 하자.
/getList로 접속하면 정상적으로 DB에 등록한 artricle에 대한 정보를 확인할 수 있다.
이번에 컨테이너가 172.17.0.2를 가지는 것을 직접 확인 할 수 있었다. 컨테이너에서 로컬은 도커호스트(자신)를 가르켜서 172.17.0.1로 접근 해야 바깥 OS에 접근할 수 있다고 전에 공부해 포스팅했는데 이번에 DB를 통해서 직접 컨테이너가 접근하는 IP를 확인할 수 있었다.
'IT' 카테고리의 다른 글
젠킨스(jenkins) 1(개요 및 설치) (1) | 2022.09.21 |
---|---|
도커라이즈 (MariaDB 이미지, docker compose, NginX Proxy Manager) (0) | 2022.09.20 |
스프링 빈(Bean)이란 (1) | 2022.09.19 |
JPA(Java Persistence API)를 왜 쓰는가? (2) | 2022.09.19 |
리눅스에서 DB 사용 앱을 도커라이즈1(172.17.0.1 이 무엇인가 ) (0) | 2022.09.18 |