MIF_E31222379_BE/Dockerfile.dev

49 lines
1.1 KiB
Docker

# Multi-stage Dockerfile untuk development dengan Air hot reload
FROM golang:1.23-alpine AS base
# Install dependencies yang diperlukan
RUN apk add --no-cache \
git \
ca-certificates \
curl \
tzdata \
make \
gcc \
musl-dev
# Install Air untuk hot reload dengan versi yang stabil
RUN go install github.com/cosmtrek/air@v1.49.0
# Set timezone ke Asia/Jakarta
ENV TZ=Asia/Jakarta
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# Set working directory
WORKDIR /app
# Create user untuk security (non-root)
RUN addgroup -g 1001 -S golang && \
adduser -S golang -u 1001 -G golang
# Copy go.mod dan go.sum terlebih dahulu untuk better caching
COPY go.mod go.sum ./
# Download dependencies
RUN go mod download && go mod verify
# Copy source code
COPY . .
# Create tmp directory dengan permissions yang tepat
RUN mkdir -p tmp && \
chown -R golang:golang /app && \
chmod -R 755 /app
# Switch to non-root user
USER golang
# Expose port
EXPOSE 7000
# Command untuk menjalankan Air
CMD ["air", "-c", ".air.toml"]