You've already forked golang-saas-starter-kit
mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-08-08 22:36:41 +02:00
88 lines
2.0 KiB
Docker
88 lines
2.0 KiB
Docker
# To manully execute build locally use:
|
|
# docker build -f cmd/web-app/Dockerfile --build-arg name=web-app .
|
|
# This uses a multi-stage docker file. You can use target to build a specific stage.
|
|
# docker build -f cmd/web-app/Dockerfile --build-arg name=web-app --target dev .
|
|
|
|
FROM golang:1.13.5-alpine3.11 AS build_base_golang
|
|
|
|
LABEL maintainer="lee@geeksinthewoods.com"
|
|
|
|
RUN apk --update --no-cache add \
|
|
git
|
|
|
|
# Change dir to project base.
|
|
WORKDIR $GOPATH/src/gitlab.com/geeks-accelerator/oss/saas-starter-kit
|
|
|
|
# Build and (re)start go apps after saving/creating/deleting source files.
|
|
RUN GO111MODULE=off go get github.com/pilu/fresh
|
|
|
|
# Enable go modules.
|
|
ARG GOPROXY=https://goproxy.io
|
|
ENV GOPROXY=$GOPROXY
|
|
ENV GO111MODULE="on"
|
|
COPY go.mod .
|
|
COPY go.sum .
|
|
RUN go mod download
|
|
|
|
FROM build_base_golang AS dev
|
|
|
|
ARG name
|
|
ARG code_path=./cmd/${name}
|
|
ARG commit_ref=-
|
|
|
|
ARG name
|
|
ENV SERVICE_NAME $name
|
|
|
|
ARG env="dev"
|
|
ENV ENV $env
|
|
|
|
ARG gogc="20"
|
|
ENV GOGC $gogc
|
|
|
|
# Copy shared packages.
|
|
COPY internal ./internal
|
|
|
|
# Copy cmd specific packages.
|
|
COPY ${code_path} ${code_path}
|
|
COPY ${code_path}/templates /build/templates
|
|
COPY ${code_path}/static /build/static
|
|
|
|
# Copy the global templates.
|
|
ADD resources/templates/shared /build/templates/shared
|
|
ADD configs/fresh-auto-reload.conf /build/runner.conf
|
|
|
|
# These need to be relative paths for Hot reloads to work with docker-compose.
|
|
ENV TEMPLATE_DIR=./templates
|
|
ENV SHARED_TEMPLATE_DIR=../../resources/templates/shared
|
|
ENV STATIC_DIR=./static
|
|
|
|
WORKDIR ${code_path}
|
|
|
|
ENTRYPOINT ["fresh", "-c", "/build/runner.conf"]
|
|
|
|
FROM dev AS builder
|
|
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags "-X main.build=${commit_ref}" -a -installsuffix nocgo -o /gosrv .
|
|
|
|
FROM alpine:3.11
|
|
|
|
RUN apk --update --no-cache add \
|
|
tzdata ca-certificates curl openssl
|
|
|
|
COPY --from=builder /build /
|
|
|
|
ENV TEMPLATE_DIR=/templates
|
|
ENV SHARED_TEMPLATE_DIR=/templates/shared
|
|
ENV STATIC_DIR=/static
|
|
|
|
ARG name
|
|
ENV SERVICE_NAME $name
|
|
|
|
ARG env="dev"
|
|
ENV ENV $env
|
|
|
|
ARG gogc="20"
|
|
ENV GOGC $gogc
|
|
|
|
ENTRYPOINT ["/gosrv"]
|