[Docker] 5-1. Leafy 애플리케이션

null·2025년 2월 11일
0

Docker

목록 보기
13/24

Leafy 애플리케이션 구성

Leafy 데이터베이스 컨테이너

  • 컨테이너 실행
    : docker run -d --name postgres -e POSTGRES_PASSWORD=password postgres:13

-e POSTGRES_PASSWORD=password

: 환경 변수 POSTGRES_PASSWORD를 password로 설정
: PostgreSQL 컨테이너는 POSTGRES_PASSWORD 환경 변수를 통해 데이터베이스의 root 계정(postgres) 비밀번호를 설정함

  • 쉘 접근
    : docker exec -it postgres bin/bash
  • docker exec
    : 실행 중인 컨테이너에서 명령어를 실행하는 명령어

  • -it
    : (interactive) 입력 활성화

Leafy 백엔드 컨테이너

# 빌드 이미지로 openJDK 11& gradle을 지정
FROM gradle:7.6.1-jdk11 AS build

# 소스코드를 복사할 작업 디렉토리를 생성 : 컨테이너 내부 작업 디렉토리
WORKDIR /app

# 호스트 머신의 소스코드를 작업 디렉토리로 복사 : Gradle 프로젝트 전체를 컨테이너로 옮김
COPY . /app

# gradle 빌드를 실행하여 jar 파일 생성 : build/libs/ 폴더 안에 애플리케이션 JAR 파일이 생성됨
RUN gradle clean build --no-daemon

# 런타임 이미지로 openJDK11 JRE-slim 지정
# : 빌드에 사용한 gradle 이미지는 무겁기 때문에, 실행 환경은 가벼운 JRE(openjdk:11-jre-slim)만 사용
FROM openjdk:11-jre-slim

# 애플리케이션을 실행할 작업 디렉토리를 생성
# : 애플리케이션을 실행할 디렉토리를 /app으로 설정
WORKDIR /app

# 빌드 이미지에서 생성된 jar파일을 런타임 이미지로 복사
# : 빌드 스테이지에서 생성된 JAR 파일을 런타임 컨테이너로 복사
# : --from=build → 이전 빌드 단계(build)에서 파일 가져오기
# : /app/build/libs/*jar → 빌드된 모든 JAR 파일
COPY --from=build /app/build/libs/*jar /app/leafy.jar

EXPOSE 8080
ENTRYPOINT ["java"]
CMD ["-jar", "leafy.jar"]

Leafy 프론트엔드 컨테이너

  • 빌드 과정에서 생성되는 파일은 웹서버에서는 사용하지 않는 파일들이기때문에 빌드과정을 node:14 이미지에서 실행 시키고
  • 결과 파일인 ./dist 디렉토리만 실행 이미지은 ngnix로 보사해온다

  • docker run -it --name node node:14 bin/bash
    : 공식 Node.js 14 버전의 Docker 이미지를 기반으로 컨테이너 생성, 이미지 없을 경우 자동 다운로드

  • /dist
    : nodejs에서 작동하기 위해 javascript 코드로 컴파일된 결과물

  • docker rm -f node
    : dist 폴더를 얻었고 더이상 node 컨테이너가 필요하지 않기때문에 삭제

0개의 댓글