# syntax=docker/dockerfile:1# Build stageFROM golang:1.21-alpine3.19 AS builder# Instalar dependencias necesariasRUN apk add --no-cache gcc musl-dev sqlite-dev# Establecer el directorio de trabajoWORKDIR /app# Copiar todo el código fuente primeroCOPY . .# Movernos al directorio de la aplicación golangWORKDIR /app/apps/monitoring# Descargar dependenciasRUN go mod download# Compilar la aplicaciónRUN CGO_ENABLED=1 GOOS=linux go build -o main main.go# Etapa finalFROM alpine:3.19# Instalar SQLite y otras dependencias necesariasRUN apk add --no-cache sqlite-libs docker-cliWORKDIR /app# Copiar el binario compilado y el archivo monitor.goCOPY --from=builder /app/apps/monitoring/main ./mainCOPY --from=builder /app/apps/monitoring/main.go ./monitor.go# COPY --from=builder /app/apps/golang/.env ./.env# Exponer el puertoENV PORT=3001EXPOSE 3001# Ejecutar la aplicaciónCMD ["./main"]
# syntax=docker/dockerfile:1
# Build stage
FROM golang:1.21-alpine3.19 AS builder
# Instalar dependencias necesarias
RUN apk add --no-cache gcc musl-dev sqlite-dev
# Establecer el directorio de trabajo
WORKDIR /app
# Copiar todo el código fuente primero
COPY . .
# Movernos al directorio de la aplicación golang
WORKDIR /app/apps/monitoring
# Descargar dependencias
RUN go mod download
# Compilar la aplicación
RUN CGO_ENABLED=1 GOOS=linux go build -o main main.go
# Etapa final
FROM alpine:3.19
# Instalar SQLite y otras dependencias necesarias
RUN apk add --no-cache sqlite-libs docker-cli
WORKDIR /app
# Copiar el binario compilado y el archivo monitor.go
COPY --from=builder /app/apps/monitoring/main ./main
COPY --from=builder /app/apps/monitoring/main.go ./monitor.go
# COPY --from=builder /app/apps/golang/.env ./.env
# Exponer el puerto
ENV PORT=3001
EXPOSE 3001
# Ejecutar la aplicación
CMD ["./main"]