forked from baron/baron-sso
34 lines
1.1 KiB
Docker
34 lines
1.1 KiB
Docker
# 1단계: Go 애플리케이션 빌드
|
|
# 개발 환경과 일치하는 특정 Go 버전 사용
|
|
FROM golang:1.25-alpine AS builder
|
|
|
|
# 컨테이너 내부의 현재 작업 디렉토리 설정
|
|
WORKDIR /app
|
|
|
|
# go.mod 및 go.sum 파일 복사
|
|
COPY backend/go.mod backend/go.sum ./
|
|
|
|
# 모든 종속성 다운로드. go.mod 및 go.sum 파일이 변경되지 않으면 종속성은 캐시됩니다.
|
|
RUN go mod download
|
|
|
|
# 소스 코드 복사
|
|
COPY backend/ .
|
|
|
|
# Go 앱 빌드
|
|
# -ldflags="-w -s"는 디버그 정보를 제거하여 바이너리 크기를 줄입니다.
|
|
# CGO_ENABLED=0은 정적 빌드를 위해 CGO를 비활성화합니다.
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o /go/bin/server ./cmd/server
|
|
|
|
# 2단계: 최종 경량 이미지 생성
|
|
# 더 작고 안전한 환경을 위해 distroless 이미지 사용
|
|
FROM gcr.io/distroless/static-debian11
|
|
|
|
# 빌더 스테이지에서 빌드된 실행 파일만 복사
|
|
COPY --from=builder /go/bin/server /
|
|
|
|
# 외부 세계에 3000번 포트 노출
|
|
EXPOSE 3000
|
|
|
|
# 실행 파일을 실행하는 명령어
|
|
ENTRYPOINT ["/server"]
|