From 87f9561d862c3043c4d208ee4c1e1dec8f6b87b8 Mon Sep 17 00:00:00 2001 From: Rosen Todorov Date: Mon, 2 Sep 2019 15:41:30 +0300 Subject: [PATCH] UPPSF-666-update-docker-image --- .circleci/config.yml | 2 +- Dockerfile | 41 +++++++++++++++++++++-------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c9d63b3..5914de1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -10,7 +10,7 @@ workflows: jobs: build: docker: - - image: circleci/golang:1.10 + - image: circleci/golang:1 working_directory: /go/src/github.com/Financial-Times/public-people-api environment: CIRCLE_TEST_REPORTS: /tmp/test-results diff --git a/Dockerfile b/Dockerfile index 39b8e61..052c7b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,32 @@ -FROM golang:1.10-alpine +FROM golang:1 ENV PROJECT=public-people-api -COPY . /${PROJECT}-sources/ -RUN apk --no-cache --virtual .build-dependencies add git curl \ - && ORG_PATH="github.com/Financial-Times" \ - && REPO_PATH="${ORG_PATH}/${PROJECT}" \ - && mkdir -p $GOPATH/src/${ORG_PATH} \ - # Linking the project sources in the GOPATH folder - && ln -s /${PROJECT}-sources $GOPATH/src/${REPO_PATH} \ - && cd $GOPATH/src/${REPO_PATH} \ - && BUILDINFO_PACKAGE="${ORG_PATH}/${PROJECT}/vendor/${ORG_PATH}/service-status-go/buildinfo." \ - && VERSION="version=$(git describe --tag --always 2> /dev/null)" \ +ENV ORG_PATH="github.com/Financial-Times" +ENV SRC_FOLDER="${GOPATH}/src/${ORG_PATH}/${PROJECT}" +ENV BUILDINFO_PACKAGE="${ORG_PATH}/${PROJECT}/vendor/${ORG_PATH}/service-status-go/buildinfo." + +COPY . ${SRC_FOLDER} +WORKDIR ${SRC_FOLDER} + +# Install dependancies +RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh \ + && $GOPATH/bin/dep ensure -vendor-only + +# Build app +RUN VERSION="version=$(git describe --tag --always 2> /dev/null)" \ && DATETIME="dateTime=$(date -u +%Y%m%d%H%M%S)" \ && REPOSITORY="repository=$(git config --get remote.origin.url)" \ && REVISION="revision=$(git rev-parse HEAD)" \ && BUILDER="builder=$(go version)" \ - && LDFLAGS="-X '"${BUILDINFO_PACKAGE}$VERSION"' -X '"${BUILDINFO_PACKAGE}$DATETIME"' -X '"${BUILDINFO_PACKAGE}$REPOSITORY"' -X '"${BUILDINFO_PACKAGE}$REVISION"' -X '"${BUILDINFO_PACKAGE}$BUILDER"'" \ - && echo "Build flags: $LDFLAGS" \ - && echo "Fetching dependencies..." \ - && curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh \ - && $GOPATH/bin/dep ensure -vendor-only \ - && go build -ldflags="${LDFLAGS}" \ - && mv ${PROJECT} /${PROJECT} \ - && apk del .build-dependencies \ - && rm -rf $GOPATH /var/cache/apk/* + && LDFLAGS="-s -w -X '"${BUILDINFO_PACKAGE}$VERSION"' -X '"${BUILDINFO_PACKAGE}$DATETIME"' -X '"${BUILDINFO_PACKAGE}$REPOSITORY"' -X '"${BUILDINFO_PACKAGE}$REVISION"' -X '"${BUILDINFO_PACKAGE}$BUILDER"'" \ + && CGO_ENABLED=0 go build -a -o /artifacts/${PROJECT} -ldflags="${LDFLAGS}" \ + && echo "Build flags: ${LDFLAGS}" +# Multi-stage build - copy certs and the binary into the image +FROM scratch WORKDIR / +COPY --from=0 /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY --from=0 /artifacts/* / CMD [ "/public-people-api" ] \ No newline at end of file