docker-compose로 컨테이너 실행하기
들어가며
게시판 프로젝트를 만들어봤다. 하지만 게시판 프로젝트는 도커로 실행하려면 MySQL 도커파일과 Spring의 도커파일을 두가지를 작성해 두개의 컨테이너를 각각 실행시켜야한다. 하지만 도커 컴포즈를 사용하면 한번에 두개의 컨테이너를 실행시켜준다. 이제한번 도커 컴포즈를 작성해보고 실행해보자.
사전준비
1. 게시판 프로젝트 만들기
[SpringBoot ] 무작정 (REST API)CRUD게시판을 만들어 보자 준비 [1]
[1] 프로젝트 준비 들어가며 프레임워크나, 언어, DB등을 이론적로 공부를 하고난후에 한번 토이 프로젝트를 통해서 실습을 해보고싶었다. 그래서 이번에 간단한 CRUD를 통해 게시판을 만들어봤다
back-stead.tistory.com
[SpringBoot] JAR(JAVA Archive) 파일 생성 하는법
JAR(Java Archive) 파일은 Java 애프릴케이션을 배포하고 실행하는데 사용되는 아카이브 형식이다. 서버를 배포하기 위해서는 jar파일로 만들어야한다. 만드는 방법 만들기전 패키지 구조 bootjar을 클
back-stead.tistory.com
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] Docker파일 작성방법 및 실행해보기
Docker 파일 작성하는 방법 들어가며 도커를 통해 배포를 실행하려면 도커 파일을 작성해 이미지로 만들고 컨테이너에 올려야 하는 과정을 걷혀야 한다. 도커 파일을 작성에 우분투 OS에 Nginx 서버
back-stead.tistory.com
도커 컴프즈 작성
도커 컴포즈란?
간단하게 도커 컴포즈(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 > 도커' 카테고리의 다른 글
[Jenkins] Nginx+Docker+Jenkins 활용한 배포 (0) | 2024.08.07 |
---|---|
[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 |