Docker를 사용하는 이유?
1. 운영 표준화
작은 컨테이너식 어플을 사용하면 손쉽게 배포하고, 문제를 파악하고, 수정을 위해 롤백이 가능하다.
2. 원활하게 이전
Docker 기반 어플을 로컬 개발 시스템에서 AWS의 프로덕션 배포로 원활하게 이전할 수 있다.
3. 빠른 코드 전달, 비용 절감
Docker를 쓰면 코드를 더 빨리 전달하고, 라소스 사용률을 높여 비용을 절감할 수 있다.
개발 환경: mac m1 애플 실리콘 , 완성된 스프링 부트 프로젝트(java11, jdk16으로 진행)
1. Homebrew로 Docker 설치하기(터미널 사용)
Homebrew란 터미널에서 명령을 실행하는 것만으로, 패키지 설치 및 제거가 용이하게 할 수 있는 Mac 용 패키지 관리 도구이다.
Homebrew설치
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Docker설치
brew install --cask docker
2. 프로젝트 빌드 해주기
bootjar을 더블 클릭해주면 build-libs안에. jar파일이 생긴다.
3. Dockerfile 만들어주기
FROM openjdk:11
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
4. docker-compose.yml 파일 만들어주기
version: '3.8'
services:
mysqldb:
image: mysql
restart: always
environment:
MYSQL_DATABASE: swproject
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
backend:
build: .
restart: always
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysqldb:3306/swproject
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root
ports:
- 8080:8080
depends_on:
- mysqldb
5. 기존 application.yml 파일 수정하기
datasourece:
아래에 있는 url을 docker-compose.yml 파일의 SPRING_DATASOURE_URL과 동일하게 바꾼다.
username과 password도 위의 docker-compose.yml 파일과 동일하게 수정한다.
6. 도커 실행하기
로컬에서 mysql을 같이 실행시켜뒀다면, 중지시켜야 한다. 충돌 위험이 있다.
맥 같은 경우 시스템 환경설정을 들어가면 아래 MYSQL이 떠있는 것을 볼 수 있다.
터미널에서 현재 디렉터리를 build-libs로 이동하고, 아래와 같은 명령어를 작동시킬 수 있다.
1. docker-compose.yml 에서 세팅한 것들 모두 실행하기 (본 포스팅은 MySql + Springboot server)
docker compose up --build -d
2. docker-compose.yml 에서 세팅한 것들 중 하나만 실행하기 (예시는 MySql 서버만 띄우기)
docker compose up --build -d mysqldb
3. docker 컨테이너 종료하기
docker compose down
4. 서버 실행 중일 때, 스프링서버 로그 확인하기
docker compose logs backend