Docker 환경에서 Spring Boot, Vue, MariaDB, Nginx 통합 배포하기
Docker 환경에서 통합 배포하기
프로젝트 개요
현재 진행 중인 프로젝트는 다음과 같은 구성 요소를 포함합니다:
- 프론트엔드: Vue.js
- 백엔드: Spring Boot
- 데이터베이스: MariaDB
각각의 컴포넌트는 독립적으로 실행 및 테스트되었습니다.
이제 이들을 도커를 사용하여 통합하고, 모두 연동된 상태에서 한 번에 실행할 수 있도록 할 계획입니다.
프론트엔드 Vue.js 빌드 : disk 파일 제작
프론트엔드 Vue.js 빌드
npm run build
vue.js프로젝트를 빌드 해줍니다.
프로젝트 파일 위치에 가보면 disk라는 폴더 밑에 이렇게 파일이 구성됩니다.
백엔드 Spring Boot 빌드 : jar 파일 제작
백엔드 Spring Boot 빌드
Intellij에서 코끼리 - build - bootJar를 클릭합니다.
프로젝트 폴더 위치에 가면 build/libs/ 폴더 안에 [프로젝트명]-0.0.1-SNAPSHOT.jar로 파일이 만들어집니다.
프로젝트 실행에 필요한 파일 다운로드
Docker Plugin 다운로드
Intellij - Plugins에서 Docker를 검색해서 설치해 줍니다.
Docker를 설치하고 나면 현재 실행중인 컨테이너 등을 확인할 수 있습니다.
Doker Images 다운로드
mariadb / nginx / redis / openjdk
이렇게 다운로드 하였습니다.
프로젝트 환경에 필요한것들을 다운로드 하시면 됩니다.
docker pull openjdk:17-jdk-buster
jar파일 실행을 위해서 openjdk:17을 도커에 받아 줍니다.
openjdk는 버전을 맞추기 위해 터미널에서 다운받았습니다.
IntelliJ Spring Boot 환경 설정
IntelliJ Spring Boot 환경 설정
IntelliJ를 기반으로 돌릴거라 https://start.spring.io/에서 Docker Compose Support만 추가하여 다운로드 하였습니다.
프로젝트 폴더 위치에 파일들을 만들어 추가해줍니다.
1. backend/백엔드_프로젝트_빌드파일.jar
backend폴더를 만들고, 그 안에 백엔트 프로젝트에서 빌드하여 제작한 jar 파일을 넣어줍니다.
2. frontend/disk/프론트엔드_프로젝트_disk파일 안 내용 복사
frontend 폴더를 만들고, 그 안에 프론트엔드를 빌드하여 만든 disk폴더를 통째로 넣어줍니다.
3. frontend/nginx/default.conf 파일 제작
frontend 폴더안에 nginx폴더를 하나 만들고 default.conf 파일을 제작합니다.
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
파일내용은 Nginx 웹 서버의 기본 동작 설정만 간단히 적었습니다.
4. compose.yaml 파일 수정
Docker Compose를 사용하여 여러 Docker 컨테이너를 정의하고 구성합니다. 이 파일을 통해 여러 서비스(컨테이너)를 하나의 설정 파일로 묶어서 손쉽게 배포하고 관리할 수 있습니다.
version: '3'
services:
db:
ports:
- 3306:3306
image: mariadb:latest
environment:
- MARIADB_ROOT_PASSWORD=1234
- MARIADB_DATABASE=greenplate
volumes:
- ./db:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
redis:
image: redis:latest
ports:
- 6379:6379
backend:
ports:
- 8080:8080
image: openjdk:17-jdk-buster
env_file:
- .env # .env 파일을 참조하여 환경 변수를 설정
volumes:
- ./backend:/app
command: "java -jar /app/green-plate-0.0.1-SNAPSHOT.jar"
frontend:
ports:
- 8081:80
image: nginx:latest
volumes:
- ./frontend/dist:/usr/share/nginx/html
- ./frontend/nginx:/etc/nginx/conf.d
파일 내용은 작동할 순서대로 적어줍니다.
제가 만든 프로그램은 backend가 처음 가동될때 db table을 제작하거나 수정하기 때문에 db를 먼저 생성해주어야 합니다.
그리고 backend에서 환경변수 파일이 너무 많아 .env파일로 제작하여 따로 빼주었습니다.
SPRING_DATASOURCE_URL=jdbc:mariadb://db:3306/greenplate
SPRING_DATASOURCE_USERNAME=root
SPRING_DATASOURCE_PASSWORD=1234
SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.mariadb.jdbc.Driver
...
.env파일은 위와같은 형태로 작성하면 됩니다.
Docker 프로그램 실행
Docker 프로그램 실행
docker-compose up -d
위 명령어로 Docker Compose에서 정의된 서비스들을 시작합니다.
docker-compose down
종료 시킬때는 down 명령어를 사용하면 됩니다.
실행시키면 도커 컴포즈가 잘 올라와서 실행된것을 확인할 수 있습니다.
docker descktop에서도 작동되는 것을 볼 수 있습니다.
프로젝트도 무사히 잘 올라왔습니다.
'IT관련 > Docker' 카테고리의 다른 글
[Docker] 도커 데스크탑 MariaDB 설치 실행 (0) | 2024.08.13 |
---|