코딩 기록 저장소

[클라우드컴퓨팅] 4-2. 계산기 백엔드 배포(Docker) 본문

학교 공부/클라우드컴퓨팅

[클라우드컴퓨팅] 4-2. 계산기 백엔드 배포(Docker)

KimNang 2025. 1. 13. 23:12

1. Dockerfile

Dockerfile
  • 설계 스케치
    - Dockerfile은 컨테이너를 어떻게 구축할지 설명하는 간략한 설계 스케치
  • 필요한 것들
    - 필요한 장비, 재료를 간략히 명시함
  • 설계도 생성
    - 이 스케치를 바탕으로 실제 컨테이너를 구현하는 완성된 설계도(Docker Image)를 생성
Docker Image
  • Docker Image
    - Docker Image는 Dockerfile 스케치를 바탕으로 만들어진 상세하고 완성된 컨테이너 설계도
  • 상세한 설계
    - 컨테이너의 모든 세부 사항을 포함하며 실제 동작 가능한 컨테이너를 설계함
  • 컨테이너 생성
    - 실제 컨테이너(Docker Cointainer) 생성에 사용됨
Docker Container
  • 실제 컨테이너
    - Docker Container는 Docker Image 설계도에 따라 구축된 실제 컨테이너
  • 작업
    - 애플리케이션 실행 및 기타 작업을 수행할 수 있음
  • 생성 및 삭제
    - 작업 종료 후 컨테이너를 삭제하고 필요시 언제든지 새 컨테이너를 생성할 수 있음
Dockerfile, Docker Image, Docker Container
  • 실제 컨테이너
    - Docker Container는 Docker Image 설계도에 따라 구축된 실제 컨테이너

2. Dockerfile 작성

Dockerfile의 예

- 컨테이너 설계의 간단한 스케치인 Dockerfile의 예

# 1. 주방의 기본 틀 설정 (FROM)
FROM openjdk:17
# Java 17 환경을 갖춘 주방 기본 구조를 설정.

# 2. 작업 공간 설정 (WORKDIR)
WORKDIR /app
# 작업을 진행할 위치를 "/app"으로 지정.

# 3. 필요한 파일 가져오기 (COPY)
COPY my-spring-app.jar /app/my-spring-app.jar
# 내 컴퓨터에서 "my-spring-app.jar" 파일을 "/app"로 복사.

# 4. 작업 준비 과정 정의 (RUN)
RUN echo "Preparing to run the application"
# 주방에서 작업 준비 단계(메시지 출력).

# 5. 프로그램 실행 방법 지정 (CMD)
CMD ["java", "-jar", "my-spring-app.jar"]
# 요리를 시작하는 기본 실행 방법 : Java 프로그램 실행.

 

Dockerfile 명령 역할 비유
FROM 기본 컨테이너 구조 설정 컨테이너의 기본 구조를 Java 17 환경으로 지정
WORKDIR 작업 공간 설정 실행을 진행할 주요 공간을 "/app"으로 지정
COPY 재료를 작업 환경으로 복사 필요한 코드파일을 "/app" 작업 환경으로 옮김
RUN 실행 준비 작업 수행 준비단계
CMD 프로그램 실행 방법 지정 Java 애플리케이션 실행

 

  1. FROM : 기본 컨테이너 구조 설정
    FROM openjdk:17
    - Java 17 환경이 설치된 기본 컨테이너를 선택함
    - Java 프로그램을 실행하려면 Java가 설치된 환경이 필수이므로, 이를 미리 제공하는 컨테이너를 준비함
    - "Java 17이 설치된 컨테이너" : 기본적인 컨테이너를 고르는 것과 같음
  2. WORKDIR : 작업 공간 설정
    WORKDIR /app
    - 컨테이너의 작업 공간 위치를 "/app"으로 설정함
    - 이후 모든 작업은 "/app"디렉토리에서 진행됨
  3. COPY : 필요한 파일 가져오기
    COPY my-spring-app.jar /app/my-spring-app.jar
    - 내 컴퓨터에 있는 "my-spring-app.jar"파일을 "/app" 작업 공간(디렉토리)으로 복사
    - 이 파일은 실행을 위해 필요한 핵심 코드 파일임
  4. RUN : 실행 준비 과정 정의
    RUN echo "Preparing to run the application"
    - 실행 준비 과정에서 메시지를 출력하거나, 특정 설정 작업 수행 가능
    - 이 경우, 단순히 "Preparing to run the application"이라는 메시지 출력
  5. CMD : 실행 방법 지정
    CMD ["java","-jar","my-spring-app.jar"]
    - 컨테이너가 실행될 때 기본적으로 실행할 명령을 지정
    - Java 명령으로 "my-spring-app.jar" 프로그램을 실행하도록 설정함

3. 백엔드 Dockerfile 작성

백엔드 Dockerfile 작성

- VScode를 실행하여 계산기 백엔드 프로젝트를 선택하여 엶

  1. Extensions 탭을 이용하여 'docker'를 검색하여 설치함
  2. 파일 작업환경으로 돌아가 Dockerfile을 생성함
  3. 아래의 코드를 작성하고 저장함

5. Docker Image 만들고 Docker hub에 등록

Docker hub

- Docker Image를 저장하고 공유하는 온라인 저장소

- 개발자들은 자신이 만든 이미지를 여기에 올려 공유하고, 다른 이들을 필요한 이미지를 가져다 사용할 수 있음

  • 설게도 공유 및 재사용 : 누구나 쉽게 Docker Image를 사용할 수 있음
  • 공식 이미지 제공 : Java, Python, Node.js 등 다양한 프로그래밍 환경의 공식 이미지를 제공
  • 무료 저장 및 다운로드 : Docker Hub는 이미지 저장 및 다운로드를 무료로 제공함
Docker Hub 회원가입 

- Docker image를 라이브러리에 등록하기 위해서 DockerHub에 가입함

- https://hub.docker.com/ 접속하여 회원가입을 진행함

 

Docker Hub 회원가입 

- Docker image를 라이브러리에 등록하기 위해서 DockerHub에 가입함

- https://hub.docker.com/ 접속하여 회원가입을 진행함

도커 이미지 만들기

- 계산기 백엔드를 위한 Docker Image를 만듦

- Dockerfile을 사용해 Docker Image를 생성함

  1. Docker Desktop 아이콘을 더블클릭하여 실행함
  2. 명령 프롬프트를 관리자 권한으로 실행함
  3. 계산기 백엔드 프로그램을 구현한 디렉터리로 이동함
  4. Docker Hub에 로그인 함
  5. Dockerfile을 사용해 계산기 백엔드 프로그램의 설계도인 Docker 이미지를 생성
    - 에러 없이 이미지가 생성 되었는지 확인
Docker Image를 Docker Hub에 등록

- docker push 명령어를 통해 이미지를 Docker Hub에 업로드 함

  1. 설계도에 주소표시 태그를 붙여야함
    docker tag calculator_backend <Docker Hub 사용자 이름>/calculator_backend
  2. Docker Hub에 업로드
    docker push <Docker Hub 사용자 이름>/calculator_backend
Docker Hub에 등록한 Docker Image 확인

- Docker Hub에서 등록한 Docker Image를 확인하고, 바로 다운로드하여 사용할 수 있음