-e POSTGRES_PASSWORD=password
: 환경 변수 POSTGRES_PASSWORD를 password로 설정
: PostgreSQL 컨테이너는 POSTGRES_PASSWORD 환경 변수를 통해 데이터베이스의 root 계정(postgres) 비밀번호를 설정함
docker exec
: 실행 중인 컨테이너에서 명령어를 실행하는 명령어-it
: (interactive) 입력 활성화
# 빌드 이미지로 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"]
docker run -it --name node node:14 bin/bash
: 공식 Node.js 14 버전의 Docker 이미지를 기반으로 컨테이너 생성, 이미지 없을 경우 자동 다운로드
/dist
: nodejs에서 작동하기 위해 javascript 코드로 컴파일된 결과물
docker rm -f node
: dist 폴더를 얻었고 더이상 node 컨테이너가 필요하지 않기때문에 삭제