generated from PenaSide/GolangTemplate
56 lines
1.2 KiB
Docker
56 lines
1.2 KiB
Docker
# BUILD
|
|
FROM golang:1.20.3-alpine AS build
|
|
|
|
# Update packages and clear cache
|
|
RUN apk update && apk add --no-cache curl && rm -rf /var/cache/apk/*
|
|
# Set work directory
|
|
WORKDIR /app
|
|
# Create binary directory
|
|
RUN mkdir /app/bin -p
|
|
# Create golang migrate util directory
|
|
RUN mkdir /bin/golang-migrate -p
|
|
# Add migrate tool
|
|
ADD ./tools/migrate /bin/golang-migrate/
|
|
# Add main files to app
|
|
ADD . .
|
|
# Download go depences
|
|
RUN go mod download
|
|
# Build app
|
|
RUN GOOS=linux go build -o bin ./...
|
|
|
|
|
|
|
|
# TEST
|
|
FROM alpine:3.18.3 AS test
|
|
|
|
# Install packages
|
|
RUN apk --no-cache add ca-certificates && rm -rf /var/cache/apk/*
|
|
# Set GO111MODULE env
|
|
ENV GO111MODULE=off
|
|
# Create home directory
|
|
WORKDIR /app
|
|
# Copy build file
|
|
COPY --from=build /app/bin/app ./app
|
|
# Copy migration dir
|
|
COPY --from=build /app/migrations/test ./migrations
|
|
# Install migrate tool
|
|
COPY --from=build /bin/golang-migrate /usr/local/bin
|
|
# CMD
|
|
CMD [ "./app" ]
|
|
|
|
|
|
|
|
# PRODUCTION
|
|
FROM alpine:3.18.3 AS production
|
|
|
|
# Install packages
|
|
RUN apk --no-cache add ca-certificates && rm -rf /var/cache/apk/*
|
|
# Create home directory
|
|
WORKDIR /app
|
|
# Copy build file
|
|
COPY --from=build /app/bin/app ./app
|
|
# Install migrate tool
|
|
COPY --from=build /bin/golang-migrate /usr/local/bin
|
|
# CMD
|
|
CMD ["./app"]
|