- DI
- mysql
- select
- 프로그래머스
- 자바
- 스프링부트
- Django
- spring
- java
- join
- spring mvc
- Docker
- Git
- spring security 6
- string
- 스프링
- AWS
- sql
- jpa
- 문자열
- ORM
- PYTHON
- SSL
- springboot
- spring boot
- 데이터베이스
- @transactional
- 1차원 배열
- nginx
- session
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
개발하는 자몽
[Docker/Spring] Dockerfile 작성과 Docker에서 SpringBoot 빌드하기 본문
[Docker/Spring] Dockerfile 작성과 Docker에서 SpringBoot 빌드하기
jaamong 2023. 5. 25. 13:29이전 포스트
이번에는 Docker에서 SpringBoot를 띄워보자. 띄울 SpringBoot에는 당연히 의존성에 spring web이 있어야 한다.
implementation 'org.springframework.boot:spring-boot-starter-web'
1. Dockerfile 작성
빌드할 SpringBoot 프로젝트에 Dockerfile을 생성하자. 반드시 Dockerfile이라는 이름으로 생성해야 한다.
아래는 Dockerfile에 들어갈 내용이다.
FROM gradle:7.5.1-jdk17-alpine as builder
USER root
WORKDIR /build
COPY build.gradle settings.gradle /build/
RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true
COPY . /build
RUN gradle build -x test --parallel
FROM openjdk:17.0-slim
WORKDIR /app
COPY --from=builder /build/build/libs/*-SNAPSHOT.jar ./app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar" ]
이 파일의 내용에는 Docker에서 SpringBoot 빌드까지 하는 내용이 포함되어 있기 때문에 터미널에서 따로 SpringBoot를 빌드해 줄 필요가 없다.
2. Docker build
작성 완료 후 github repository에 commit & push를 진행하자. 이제 git clone을 이용하여 해당 프로젝트를 ec2 인스턴스에 다운로드하도록 하자.
git clone 이후 해당 프로젝트로 이동하고 아래 명령어를 입력한다. 이미지 이름은 원하는 대로 입력하되 대문자가 들어가선 안 된다.
docker build -t <이미지이름> . //. 뒤에 반드시 띄어쓰기 하고 enter
3. Docker run
빌드가 잘 되었다면 아래 명령어를 입력하여 실행한다. 아래 명령어에 -d 옵션을 줘서 데몬으로 띄울 수 있고 -p 8080:8080 처럼 옵션을 줘서 포트를 명시해 줄 수 있다. 실행 전, 인스턴스 보안 그룹에 8080 포트가 열려있는지 확인을 꼭 하자
docker run <이미지이름> //기본
docker -d -p 8080:8080 <이미지이름> //-d 옵션과 -p 옵션
이렇게 실행하고 ec2 인스턴스의 퍼블릭 주소로 접속하면~
위와 같은 화면이 아닌 whitelabel 에러가 반겨줄 것이다. 나의 경우는 / 경로로 접속하면 hello를 출력하도록 미리 컨트롤러를 작성해 뒀다.
@RestController
public class HelloController {
@GetMapping("/")
public String hello() {
return "hello";
}
}
그러면 여기까지! Docker에서 SpringBoot 프로젝트를 빌드하고 실행까지 완료해 봤다.
'Architecture & Tool > Docker' 카테고리의 다른 글
[Docker] image, container, Dockerfile, docker compose, (0) | 2024.02.03 |
---|---|
[Docker] docker compose 명령어 (0) | 2023.11.17 |
[Docker] 도커 <none>/dangling image 삭제 (1) | 2023.11.03 |
[AWS EC2/Docker] EC2 생성, EC2에 Docker 설치, Docker에 MySQL 띄우기 (0) | 2023.05.20 |