개발로드

☆KDT 2024-05-11★Docker MySQL 설치 본문

JAVA

☆KDT 2024-05-11★Docker MySQL 설치

위대한개발자 2024. 5. 11. 15:34

IaC(Infra as Code) : 코드형 인프라

 수동 프로세스가 아니라 코드를 통해서 인프라를 관리하고 프로비저닝(배포) 하는 것
 인프라 사양을 담은 구성 파일을 이용해서 구성을 편집하고 배포하는 것

 


 

Docker에서는 Dockerfile과 docker-compose를 이용해서 코드형 인프라를 구현합니다.

 

Dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일입니다.


Spring Boot Application을 이미지로 만들어서 실행

이렇게 하는 이유는 스프링으로 애플리케이션을 만들어서 다른 곳에서 실행을 하고자 하는 겨웅 그 곳에 직접 자바를 설치하고 스프링을 설치해서 실행해야합니다.

이렇게 하면 사람이 하는 것이므로 실수를 할 수 있게 됩니다.

이런 부분을 사람이 직접 하지 않고 코드가 할 수 있도록 하면 일관성이 있게 작업을 수행할 수 있습니다.

최근에는 애플리케이션을 Dockerfile을 이용해서 이미지로 만들고 docker-compose를 이용해서 실행을 합니다.

 

이런 용도로 사용되는 가장 유명한 프로그램이 ansible 입니다.

 

 

 

 

루트 디렉토리에 도커파일 생성

 

 

FROM amazoncorretto:17
CMD ["./mvnw", "clean", "package"]
ARG JAR_FILE=target/*.jar
COPY ./build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

 

 

gradle 프로젝트 빌드 : 실행 파일을 생성
gradlew clean build

리눅스일 경우 : ./gradlew clean build

 

 

Dockerfile을 이용해서 도커 이미지 생성

docker build -f 도커파일명 -t 이미지이름 디렉토리

 

docker build -f Dockerfile -t springapp:1.0.0 .

 

docker에서 image 확인

 

 

이미지를 컨테이너로 변환

docker run -p 80:8080 springapp:1.0.0

 

docker에서 container 확인

 

 

SpringApp 실행하기

docker run --name springapp -dit -p 80:8080 springapp:1.0.0

 

 

intelliJ를 실행종료했음에도 불구하고 실행됨


도커허브에 업로드 하기
이미지이름 변경 : docker tag 이미지이름 계정이름/이미지이름:버전
docker tag springapp:1.0.0 wonjungkim/springapp:latest

이미지 업로드 : docker push 계정이름/이미지이름:버전
docker push wonjungkim/springapp

 

docker hub 레포지토리에서 가져오기

docker pull wonjungkim/springapp

 

image 다운로드후 image 실행

docker run --name springapp -dit -p 80:8080 wonjungkim/springapp

 


docker-compose.yml는 이미지를 기반으로해서 컨테이너를 생성하는 스크립트 파일

version: "3"

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: "java -jar app.jar"
    ports:
      - "80:8080"

 

docker-compose -f docker-compose.yml up --build

 

 

 


여유가 되신다면 제 GitHub에 오셔서 좋은 코드들을 구경해주세요!

 

https://github.com/gimpo5975?tab=repositories

 

gimpo5975 - Overview

gimpo5975 has 11 repositories available. Follow their code on GitHub.

github.com