docker-compose로 컨테이너 실행하기
들어가며
게시판 프로젝트를 만들어봤다. 하지만 게시판 프로젝트는 도커로 실행하려면 MySQL 도커파일과 Spring의 도커파일을 두가지를 작성해 두개의 컨테이너를 각각 실행시켜야한다. 하지만 도커 컴포즈를 사용하면 한번에 두개의 컨테이너를 실행시켜준다. 이제한번 도커 컴포즈를 작성해보고 실행해보자.
사전준비
1. 게시판 프로젝트 만들기
3.도커 설치
파일구조
MysqlDB
- sotre : 볼륨 파일
- Dockerfile
spring-board
- jar : 게시판 프로젝트를 빌드한 jar파일
- Dockerfile
전체코드(spring은 jar파일로 만들어놈) 깃(git) 참고
(docker-compose에 있습니다.)
도커 파일작성
MysqlDB의 Dockerfile
FROM mysql:8.0.33
ENV MYSQL_ROOT_PASSWORD=root1234
ENV MYSQL_DATABASE=board
ENV MYSQL_HOST=%
CMD ["--character-set-server=utf8mb4","--collation-server=utf8mb4_unicode_ci"]
- MySQL의 버전은 8.0.33 사용
spring-board의 Dockerfile
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY ./jar/*.jar /app/board.jar
ENTRYPOINT ["java", "-jar","board.jar"]
- jdk 11의 slim 버전을 사용하며, board-0.0.1-SNAPSHOT.jar을 board.jar로 변경후 저장 및 실행
도커파일의 작성하는 방법이 이해가 되지않는다면
도커 컴프즈 작성
도커 컴포즈란?
간단하게 도커 컴포즈(Docker Compose)는 여러 개의 도커 컨테이너를 정의하고 실행하기 위한 도구입니다. 하나의 파일에 여러 개의 서비스를 정의하여 컨테이너들을 동시에 관리할 수 있습니다. 이 파일은 YAML 형식으로 작성되며, 각 서비스의 설정 및 의존 관계를 정의할 수 있습니다.
docker-compose.yml 작성
version: '3'
services:
db:
build:
context: MysqlDB
dockerfile: ./Dockerfile
ports:
- 3307:3306
volumes:
- ./MYsqlDB/store:/var/lib/mysql
networks:
- network
spring:
build:
context: spring-board
dockerfile: ./Dockerfile
restart: always
ports:
- 8000:8080
depends_on:
- db
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/board?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
SPRING_DATASOURCE_DRIVER: com.mysql.cj.jdbc.Driver
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root1234
networks:
- network
networks:
network:
간단히 설명해보겠습니다.
- db or spring: 사용할 서비스명(마음대로 작성가능)
- context : 사용할 디렉터리 명(ex. db의 context는 MysqlDB디렉터리 파일명)
- dockerfile : 작성한 도커파일명(ex. MysqlDB하위에 Dockerfile을 가르킴)
- restart : 도커컨테이너가 종료되었을때 자동으로 실행하게해준다.
- depends_on : db의 의존해 db가 정상적으로실행되어야 spriong서비스가 실행되게한다.
- environment : 환경변수를 작성. (현재 jar파을보게되면 application.yml에 환경변수로 설정되어있다. )
- networks: 네트워크를통해 각 컨테이너와 통신하기 위해서 생성 네트워크를 설정하지 않는다면 컨테이너간 IPv4의 주소가 달라서 통신하지 못해 연동실패
도커 컴포즈 실행
도커컴포즈를 실행하기 위해서는 도커파일이 있는 디렉터리 위치고 이동해야한다.
docker-compose up -d 실행
docker ps 로 컨테이너 상태가 up인지 확인
도커 컴포즈를 통해서 한번만 실행했는데 실행중인 컨테이너를 보면 두개가 실행되어 있는것을 볼수있다 . 이처럼 도커 컴포즈는 여러개의 컨테이너를 묶어서 한번에 실행할수있다.
localhost:8080/board 에 접속하면 올바르게 실행된것을볼수있다.
그후에 회원 가입을하고 데이터베이스를 확인해보자
username과 password가 올바르게 저장되어 있는것을 볼수이다.
'Devops > 도커' 카테고리의 다른 글
[Docker] 도커 허브(Docker hub)에 리파지토리(Repository)에 저장하기 및 다운받기 (0) | 2024.02.03 |
---|---|
[Docker] 도커로 만든 MySQL을 MySQL Workbench로 연동하는 방법 및 볼륨 사용하기 (1) | 2024.01.31 |
[Docker] nginx 설정파일 커스텀 해보기 (1) | 2024.01.31 |
[Docker] Docker파일 작성방법 및 실행해보기 (1) | 2024.01.31 |
[Docker] 헬스체크와 디펜던시 체크란? (1) | 2024.01.27 |