코로나를 걸리면서 일주일정도 푹 쉬게 되었다,, 몸이 약간 나아져서 예전부터 해보고싶었던 Docker에 Spring Boot 구축하기를 여유있을때 공부해보았다. 나중에 Docker를 통해서 배포까지 해보고 싶지만 추후에 미루고 먼저 Docker + SpringBoot 로 개발을 시작하기전 환경 구축을 하는 것을 먼저 해보자.
참고로 이미 개발해두었던 API들을 도커에 올리는 형식으로 했다. 이제 하는 방법을 잘 알았으니 다음부터 프로젝트를 할때는 도커와 스프링을 먼저 개발환경 설정해주고 시작해야겠다.
아래부터 차근차근 설정을 해보도록 하겠다.
첫번재로 Gradle -> Project이름 -> Tasks -> build 에서 bootJar을 실행시켜주면
패키지 내부에 있는 build-> libs 로 가게되면 jar 파일이 하나 생겼다. 참고로 jar 파일은 여러 개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이라고 한다.
libs 패키지 내부에 Dockerfile 이라는 확장자명이 없는 일반 파일을 하나 생성해주고 그 안에
위와 같이 작성해주며 각각 아래로 설명된다.
작성이 완료되었다면 libs 패키지 내부에 docker-compose.yml 파일을 하나 생성해준다. docker-compose 파일을 통해 Dockerfile 하나보다 여러 컨테이너들을 묶어서 편하게 관리해주자.
version: '3'
services:
database:
container_name: test
image: mysql/mysql-server:5.7
environment:
MYSQL_DATABASE: board
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: 1234
TZ: 'Asia/Seoul'
ports:
- "3305:3306"
command:
- "mysqld"
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
networks:
- test_network
application:
container_name: docker-compose-test
build:
context: ./
dockerfile: Dockerfile
ports:
- "8000:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://test:3306/board?characterEncoding=UTF-8&serverTimezone=UTC
SPRING_DATASOURCE_USERNAME: "root"
SPRING_DATASOURCE_PASSWORD: "1234"
depends_on:
- database
networks:
- test_network
networks:
test_network:
mysql container의 이름은 test 로 지었고 그 안에 생성할 database는 board로 명시해주었다. root에 1234로 비밀번호를 설정해주고 아래 Spring_DATASOURCE 부분은 설정해준데로 test에 root / 1234 로 접속해주면 된다.
주의할점은 mysql의 경우 내부에서 3306 포트를 이용하지만 외부는 3305로 접근하게 해주었으며 서버의 포트는 8080으로 내부로 접속하지만 외부에서는 8000번을 사용하도록 설정하였다.
1 터미널에서 cd 명령어를 통해 build -> libs 로 이동한후 docker-compose up --build -d 명령어로 빌드해준다. 이후 Control + c 로 컨테이너를 중지시켜주거나 터미널에서 docker-compose stop 으로 중지시켜주면 된다. 서버를 실행하고 사용을 완료했다면 터미널에서 docker-compose down 을 통해 정지시키고 삭제하는것이 좋다고 한다.
로컬 IP 주소와 외부 포트 번호 + 설정해준 root / 1234로 workbench 나 기타 GUI 툴로 mysql로 접근하는것도 가능하니까 참고해서 데이터베이스를 잘 구성해보도록 하자.
적어놓고보니 간단한데 사실 되게 헤맸다,, 아래는 도커에 스프링을 올리기 위해 참고했던 블로그이다.
[Docker] 도커에 SpringBoot 구축하기
Compose 커맨드 사용법