반응형
도커로 springBoot API 서버, mysql 서버를 같은 네트워크로 묶어서 띄운 후 호스트 PC에서 호출하는 예제
테스트 프로젝트
springBoot server Dockerfile 😄
FROM openjdk:11-jdk-slim
WORKDIR /app
#현재 경로의 모든 파일 복사
COPY . .
# 개행문자 오류 해결 [unix와 window 시스템 차이], 이건 예제 소스 그대로 가져옴
RUN sed -i 's/\r$//' gradlew
# gradlew파일 파일 실행 권한 부여
RUN chmod +x ./gradlew
# gradlew 빌드 실행
RUN ./gradlew clean build
#환경변수 세팅
ENV JAR_PATH=/app/build/libs
#파일명 변경
RUN mv ${JAR_PATH}/*.jar /app/app.jar
#기본 명령어
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"]
mysql Dockerfile 🤗
FROM mysql:8.0
#초기 데이터 세팅 위한 sql 복사
COPY init.sql /docker-entrypoint-initdb.d
#환경변수 세팅
ENV MYSQL_ROOT_PASSWORD=1234
ENV MYSQL_DATABASE=testdb
ENV MYSQL_HOST=%
#캐릭터셋 설정
CMD ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
init.sql 😆
CREATE TABLE user_tb (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO user_tb (name) VALUES ('John');
INSERT INTO user_tb (name) VALUES ('Jane');
docker-compose.yml 🙂
version: '3'
services:
#mysql db 서비스명
db:
#빌드 옵션, 컨텍스트 패쓰, 도커파일명
build:
context: ./docker-test-db
dockerfile: Dockerfile
#호스트에서 3306~3308포트 사용 중이라 포트포워딩 함
ports:
- 3309:3306
#데이터 저장하기 위해 호스트PC의 폴더와 볼륨 연결
volumes:
- ./docker-test-db/store:/var/lib/mysql
#네트워크명 설정ㄹ
networks:
- network
#스프링부트 서버
server:
build:
context: ./docker-test-server
dockerfile: Dockerfile
#종료 시 자동 재시작
restart: always
#역시 포트포워딩
ports:
- 9797:8080
#db가 먼저 올라와야 웹서버가 제대로 뜨니까 db 먼저 올라오고 나서 시작
depends_on:
- db
environment:
#아래 URL의 //db이건 위의 mysql 서비스명을 참조하도록 설정
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/testdb?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
SPRING_DATASOURCE_DRIVER: com.mysql.cj.jdbc.Driver
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: 1234
#mysql 서비스와 같은 네트워크명
networks:
- network
#네트워크 설정
networks:
network:
개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.
reference: https://www.youtube.com/watch?v=uCRaB5ER3zI
반응형
'IT > DevOps' 카테고리의 다른 글
[linux] 리눅스에 cubrid 설치(feat. cubrid 11.2 ver) (27) | 2023.12.23 |
---|---|
[Docker] Docker Compose sample(feat. API Server) (52) | 2023.11.07 |
[Docker] Docker Compose [1] (feat. volumes) (45) | 2023.11.05 |
[Docker] Docker File [6] (feat. ENV, VOLUME) (44) | 2023.11.05 |
[Docker] Docker File [5] (feat. nginx proxy) (45) | 2023.11.04 |