1
0
forked from baron/baron-sso
Files
baron-sso/docker/Dockerfile.backend

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"]