money/Dockerfile

45 lines
968 B
Docker

# ====== STAGE 1: build ======
FROM golang:1.22-alpine AS builder
# Installa tool utili per mod e certs (git, ca)
RUN apk add --no-cache git ca-certificates
WORKDIR /src
# Copia i mod per cache dei deps
COPY go.mod go.sum ./
RUN go mod download
# Copia il resto del sorgente
COPY . .
# Compila binario statico e snello
ENV CGO_ENABLED=0
RUN go build -trimpath -ldflags="-s -w" -o /out/money ./...
# ====== STAGE 2: runtime ======
FROM alpine:3.20
# Certificati TLS per HTTPS (Binance/THOR/Matrix) + tzdata opzionale
RUN apk add --no-cache ca-certificates tzdata
# Crea utente non-root
RUN adduser -D -u 1001 appuser
WORKDIR /app
# Directory dati persistenti (montabili come volume)
RUN mkdir -p /app/data /app/state && chown -R appuser:appuser /app
# Copia binario
COPY --from=builder /out/money /app/money
USER appuser
# Env di default (puoi sovrascriverle in compose)
ENV DATA_DIR=/app/data \
STATE_DIR=/app/state
# Avvio demone
CMD ["/app/money"]