FROM golang:alpine as builder LABEL org.opencontainers.image.authors="psssix " # set build environmet variables needed for multistage building ENV CGO_ENABLED=0 \ GOOS=linux # source workdir WORKDIR /source # Copy and download dependency using go mod # Vendoring COPY go.mod go.sum ./ RUN go mod download # Copy the code into the container COPY . . # Build the application RUN go build -ldflags "-s -w" -o /build/app . FROM scratch # or alpine, if you need install utilities # #FROM alpine:latest # ## Add entrypoint dependency #RUN apk add --no-cache bash mysql-client mariadb-connector-c # Move to /app directory as the place for resulting binary folder WORKDIR / # Copy binary from build to main folder COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=builder /build/app app # Copy some application assets #COPY --from=builder /source/deploy/docker/environment.sh ./deploy/docker/environment.sh #COPY --from=builder /source/deploy/docker/logging.sh ./deploy/docker/logging.sh #COPY --from=builder /source/entrypoint.sh . #COPY --from=builder /source/migrations ./migrations #COPY ./database/data.json /database/data.json # Export necessary port #EXPOSE 3000 # entry and start entrypoint with some actions and checks before CMD #ENTRYPOINT ["bash", "/entrypoint.sh" ] # Command to run when starting the container CMD ["/app"] # if have not application daemon #CMD tail -f /dev/null