diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4c1504f --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +** +!/cmd +!/internal +!/vendor +!/docker +!go.mod +!go.sum diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..68f5c1f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,47 @@ +################################### +# Build stages +################################### +FROM golang:1.17-alpine3.14 AS build-go + +ARG GOPROXY +ENV GOPROXY ${GOPROXY:-direct} + +RUN apk update \ + && apk --no-cache add build-base git bash + +COPY . ${GOPATH}/src/bot +WORKDIR ${GOPATH}/src/bot + +RUN go build ./cmd/gitea-sonarqube-bot + +################################### +# Production image +################################### +FROM alpine:3.14 +LABEL maintainer="justusbunsi " + +RUN apk update \ + && apk --no-cache add ca-certificates bash \ + && rm -rf /var/cache/apk/* + +RUN addgroup -S -g 1000 bot \ + && adduser -S -D -H -h /home/bot -s /bin/bash -u 1000 -G bot bot + +RUN mkdir -p /home/bot/config/ +RUN chown bot:bot /home/bot/config/ + +COPY --chown=bot:bot docker / +COPY --from=build-go --chown=bot:bot /go/src/bot/gitea-sonarqube-bot /usr/local/bin/gitea-sonarqube-bot + +#bot:bot +USER 1000:1000 +WORKDIR /home/bot +ENV HOME=/home/bot + +EXPOSE 3000 +ENV GIN_MODE "release" + +VOLUME ["/home/bot/config/"] + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] +CMD [] diff --git a/docker/usr/local/bin/docker-entrypoint.sh b/docker/usr/local/bin/docker-entrypoint.sh new file mode 100644 index 0000000..37a0ba7 --- /dev/null +++ b/docker/usr/local/bin/docker-entrypoint.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +if [ $# -gt 0 ]; then + exec "$@" +else + exec /usr/local/bin/gitea-sonarqube-bot +fi