개발 무지렁이

[Docker] 도커라이즈(스프링부트 앱 실행파일 + 자바) 및 운영서버에서 실행 본문

Backend/Docker

[Docker] 도커라이즈(스프링부트 앱 실행파일 + 자바) 및 운영서버에서 실행

Gaejirang-e 2023. 7. 6. 16:07

스프링부트 프로젝트 생성 🌱


[HomeController.java]

  @Controller
  public class HomeController {
      @RequestMapping("/")
      @ResponseBody
      public String showMain() {
          return "<h1>Hello, SB</h1>";
      }
  }

[application.yml]

  spring:
      profiles:
          active: dev

(개발용 ⌨️) [application-dev.yml]

  server:
      port: 8020

(배포용 🎲) [application-prod.yml]

스프링부트 프로젝트 in GitHub Repository, 운영서버에서 git pull



💻. in 운영서버(CentOS)
sudo yum install git -y 🐱

sudo yum install java-17-openjdk -y
sudo yum install java-17-openjdk-devel -y

[/docker_projects/sbhello_1/project in CentOS(운영서버)]

  git clone [GitHub Repository 주소] .

       ⭐. ls -alh

       


       🪛. gradlew를 소유자가 실행가능한 상태로 권한 변경
       : 644 -> chmod 744 gradlew


       ❓. gradlew(gradle wrapper)란
       : 새로운 환경에서 프로젝트를 설정할 때, gradle을 설치하지 않고,
       바로 빌드할 수 있게 해주는 역할을 한다.
       Tistory's Card

       ❓. 빌드(build)란
       : 실행파일을 만드는 과정

       ⭐. ls -alh
       

🐘. gradlew 실행

  ./gradlew clean build # build 폴더 생김
  cd build/libs/

app20230706-0.0.1-SNAPSHOT.jar

📀.jar (실행파일 + 톰캣🐱)

🌱.Spring Boot 실행 in 운영server(CentOS)

  cd /docker_projects/sbhello_1/project
  java -jar -Dspring.profile.active=prod build/libs/app20230706-0.0.1-SNAPSHOT.jar

  # 개발용 http://192.168.56.103:8020/
  # 배포용 http://192.168.56.103:8080/
🪛. 옵션
-Dspring.profile.active=prod: 배포용으로 활성화

🐋. 도커라이즈(도커 이미지화)


자바(openjdk:17-jdk-alpine) + 실행파일(app.jar)

✏️. vim Dockerfile

  ROM openjdk:17-jdk-alpine
  ARG JAR_FILE=build/libs/app20220916-0.0.1-SNAPSHOT.jar
  COPY ${JAR_FILE} app.jar
  EXPOSE 8080
  ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","/app.jar"]
🐋. docker build -t sbhello .
🐋. docker run -d -p 8080:8080 --name=sbhello sbhello

💡. http://192.168.56.103:8080

Comments