Notice
Tags
- Operating_System
- Kubernetes
- 오블완
- Unix_System
- 자격증
- 티스토리챌린지
- programmers
- app
- SingleProject
- Image_classification
- Personal_Study
- C
- tensorflow
- Android
- c++
- Java
- Artificial_Intelligence
- 2023_1st_Semester
- Algorithm
- study
- codingTest
- cloud_computing
- Database_Design
- Univ._Study
- 리눅스마스터2급
- Baekjoon
- datastructure
- Python
- Linux
- pytorch
코딩 기록 저장소
[클라우드컴퓨팅] 4-2. 계산기 백엔드 배포(Docker) 본문
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 애플리케이션 실행 |
- FROM : 기본 컨테이너 구조 설정
- Java 17 환경이 설치된 기본 컨테이너를 선택함FROM openjdk:17
- Java 프로그램을 실행하려면 Java가 설치된 환경이 필수이므로, 이를 미리 제공하는 컨테이너를 준비함
- "Java 17이 설치된 컨테이너" : 기본적인 컨테이너를 고르는 것과 같음 - WORKDIR : 작업 공간 설정
- 컨테이너의 작업 공간 위치를 "/app"으로 설정함WORKDIR /app
- 이후 모든 작업은 "/app"디렉토리에서 진행됨 - COPY : 필요한 파일 가져오기
- 내 컴퓨터에 있는 "my-spring-app.jar"파일을 "/app" 작업 공간(디렉토리)으로 복사COPY my-spring-app.jar /app/my-spring-app.jar
- 이 파일은 실행을 위해 필요한 핵심 코드 파일임 - RUN : 실행 준비 과정 정의
- 실행 준비 과정에서 메시지를 출력하거나, 특정 설정 작업 수행 가능RUN echo "Preparing to run the application"
- 이 경우, 단순히 "Preparing to run the application"이라는 메시지 출력 - CMD : 실행 방법 지정
- 컨테이너가 실행될 때 기본적으로 실행할 명령을 지정CMD ["java","-jar","my-spring-app.jar"]
- Java 명령으로 "my-spring-app.jar" 프로그램을 실행하도록 설정함
3. 백엔드 Dockerfile 작성
백엔드 Dockerfile 작성
- VScode를 실행하여 계산기 백엔드 프로젝트를 선택하여 엶
- Extensions 탭을 이용하여 'docker'를 검색하여 설치함
- 파일 작업환경으로 돌아가 Dockerfile을 생성함
- 아래의 코드를 작성하고 저장함
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를 생성함
- Docker Desktop 아이콘을 더블클릭하여 실행함
- 명령 프롬프트를 관리자 권한으로 실행함
- 계산기 백엔드 프로그램을 구현한 디렉터리로 이동함
- Docker Hub에 로그인 함
- Dockerfile을 사용해 계산기 백엔드 프로그램의 설계도인 Docker 이미지를 생성
- 에러 없이 이미지가 생성 되었는지 확인
Docker Image를 Docker Hub에 등록
- docker push 명령어를 통해 이미지를 Docker Hub에 업로드 함
- 설계도에 주소표시 태그를 붙여야함
docker tag calculator_backend <Docker Hub 사용자 이름>/calculator_backend - Docker Hub에 업로드
docker push <Docker Hub 사용자 이름>/calculator_backend
Docker Hub에 등록한 Docker Image 확인
- Docker Hub에서 등록한 Docker Image를 확인하고, 바로 다운로드하여 사용할 수 있음
'학교 공부 > 클라우드컴퓨팅' 카테고리의 다른 글
[클라우드컴퓨팅] 4-4. 계산기 프론트엔드 배포 (EC2 생성 설정) (0) | 2025.01.15 |
---|---|
[클라우드컴퓨팅] 4-3. 계산기 백엔드 배포 (EC2 생성 설정 배포) (1) | 2025.01.15 |
[클라우드컴퓨팅] 4-1. 계산기 프론트엔드 구현 (JavaScript) (0) | 2025.01.11 |
[클라우드컴퓨팅] 3-7. 계산기 프론트엔드 (HTML CSS) (0) | 2025.01.04 |
[클라우드컴퓨팅] 3-6. 계산기 백엔드 구현 (2) | 2024.12.22 |