
배포 과정 요약

- 로컬에 Dockerfile 생성
- 프로젝트를 build 하여 jar파일 생성
- Docker Build를 하여 Docker Image 생성
- Docker Image를 dockerhub에 push
- AWS EC2 서버에 Docker Image를 pull
- Docker Run 명령어를 통해 Docker Image를 실행
Dockerfile을 Docker Image로 만들기
1. 프로젝트 하위에 Dockerfile 파일을 만들어줍니다.

2. Dockerfile 코드를 작성합니다.
# open jdk 11 버전의 환경을 구성
FROM adoptopenjdk/openjdk11:latest
# build가 되는 시점에 JAR_FILE이라는 변수 명에 build/libs/*.jar 선언
# build/libs - gradle로 빌드했을 "때 jar 파일이 생성되는 경로
ARG JAR_FILE=build/libs/*.jar
# JAR_FILE을 app.jar로 복사
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
3. jar 파일을 생성해 줍니다.
./gradlew build
위의 명령어를 통해 성공적으로 build가 된다면 build/libs 경로에 jar파일이 생성됩니다.


4. 도커 허브에 저장소 생성
Docker Hub Container Image Library | App Containerization
Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your team's container applications. Create your account Signing up for Docker is fast and free. Continue with GoogleContinue with GitHubContinue wi
hub.docker.com
위의 사이트에 접속하여 Repository를 생성합니다.

5. Docker Image build
// gradle
docker build --build-arg DEPENDENCY=build/dependency -t 도커허브 ID/Repository .

위 명령어를 통해 Dockerfile을 Docker Image로 빌드를 진행합니다.

맥북 M1의 경우 Docker 이미지 빌드 호환성 문제가 있기에 "--platform linux/amd64"를 "." 다음에 추가해야 합니다.
위의 명령어를 입력하였을 때, 아래와 같은 에러가 발생한다면 Docker Desktop를 실행하지 않아 발생한 에러이기에 Docker Desktop를 실행해 줍니다.

Docker Image를 Docker Hup에 Push
Push는 매우 간단합니다. Docker Hub에 생성한 저장소를 보면 아래와 같이 push 명령어가 적혀있습니다.

tagname을 입력하지 않으면 자동으로 latest로 생성하여 push를 합니다.

결과는 hub.docker 또는 Docker Desktop에서 확인할 수 있습니다.


EC2 서버에 배포
1. 서버에 docker 설치 및 실행
# docker 설치
sudo yum install docker
#docker 실행
sudo systemctl start docker
$sudo docker images 명령어를 통해 정상적으로 실행이 되었는지 확인할 수 있습니다.

2. dockerhub에서 image pull

3. image파일 실행

8080:8080은 host 포트와 container 포트를 의미합니다.

참고자료
[20210719] Spring Boot + docker 배포(MacOS M1) · Issue #180 · JuHyun419/TIL-TodayILearned
📎 Spring Boot + Docker + AWS EC2 배포하기(Mac M1) 안녕하세요, 이번 시간에는 스프링 부트 애플리케이션을 AWS EC2에 도커를 통해 배포해보도록 하겠습니다. ※ 틀린 내용이 존재할 수 있으니 참고해서
github.com
'도커' 카테고리의 다른 글
| 도커(Docker)란? (feat. 생활코딩) (1) | 2024.01.03 |
|---|
느리더라도 단단하게 성장하고자 합니다!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!