From 528ef967afd38bca13aaaecff87f55de3b1bee67 Mon Sep 17 00:00:00 2001 From: hunterlong Date: Tue, 5 May 2020 16:33:08 -0700 Subject: [PATCH] docker archs --- .github/workflows/master.yml | 17 +++-------------- Dockerfile | 24 +++++++++++++----------- Makefile | 27 ++++++++++++++++++++++++++- 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index f778952f..a4641a81 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -336,10 +336,10 @@ jobs: files: | releases/statping-linux-386.tar.gz releases/statping-linux-amd64.tar.gz - releases/statping-linux-arm.tar.gz releases/statping-linux-arm64.tar.gz releases/statping-linux-arm-7.tar.gz releases/statping-linux-arm-6.tar.gz + releases/statping-linux-arm-5.tar.gz - name: Upload MaxOSX Release id: upload-darwin-asset @@ -389,19 +389,8 @@ jobs: dockerfile: Dockerfile.base tags: "base" - - name: Latest/Version Docker Image - uses: elgohr/Publish-Docker-Github-Action@master - env: - VERSION: ${{ env.VERSION }} - ARCH: amd64 - DOCKER_CLI_EXPERIMENTAL: enabled - with: - name: statping/statping - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - dockerfile: Dockerfile - tags: "latest,v${{ env.VERSION }}" - buildargs: VERSION,ARCH + - name: Release Docker images + run: make docker-manifest sentry-release: needs: upload-release diff --git a/Dockerfile b/Dockerfile index be485d89..ab67cb1c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,24 @@ -FROM statping/statping:base AS base - -# Statping main Docker image that contains all required libraries FROM alpine:latest -RUN apk --no-cache add libgcc libstdc++ ca-certificates curl jq && update-ca-certificates +MAINTAINER "Hunter Long (https://github.com/hunterlong)" +ARG VERSION +ARG ARCH -COPY --from=base /go/bin/statping /usr/local/bin/ -COPY --from=base /usr/local/bin/sass /usr/local/bin/ -COPY --from=base /usr/local/share/ca-certificates /usr/local/share/ +RUN apk --no-cache add curl jq + +RUN curl -L -s https://assets.statping.com/sass -o /usr/local/bin/sass && \ + chmod +x /usr/local/bin/sass + +RUN curl -L -O https://github.com/statping/statping/releases/download/v$VERSION/statping-linux-$ARCH.tar.gz && \ + tar -xzf statping-linux-$ARCH.tar.gz && mv statping /usr/local/bin/ && rm -f statping-linux-$ARCH.tar.gz WORKDIR /app +VOLUME /app -ENV IS_DOCKER=true -ENV SASS=/usr/local/bin/sass -ENV STATPING_DIR=/app ENV PORT=8080 +ENV STATPING_DIR=/app EXPOSE $PORT -HEALTHCHECK --interval=60s --timeout=10s --retries=3 CMD curl -s "http://localhost:$PORT/health" | jq -r -e ".online==true" +HEALTHCHECK --interval=30s --timeout=5s --retries=5 CMD curl -s "http://localhost:$PORT/health" | jq -r -e ".online==true" CMD statping --port $PORT diff --git a/Makefile b/Makefile index cf7b4f7f..ab5a5e29 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ TRAVIS_BUILD_CMD='{ "request": { "branch": "master", "message": "Compile master TEST_DIR=$(GOPATH)/src/github.com/statping/statping PATH:=/usr/local/bin:$(GOPATH)/bin:$(PATH) OS = freebsd linux openbsd -LINUX_ARCHS = 386 amd64 arm-7 arm-6 arm64 arm-5 +LINUX_ARCHS = 386 amd64 arm-7 arm-6 arm64 a BASIC_ARCHS = 386 amd64 all: clean yarn-install compile docker-base docker-vue build-all @@ -255,6 +255,31 @@ docker-build-dev: docker build --build-arg VERSION=${VERSION} -t hunterlong/statping:latest --no-cache -f Dockerfile . docker tag hunterlong/statping:dev hunterlong/statping:dev-v${VERSION} +docker: + @for arch in $(LINUX_ARCHS);\ + do \ + echo "Docker build v${VERSION} statping/statping:$$arch-latest"; \ + docker build --build-arg VERSION=${VERSION} --build-arg ARCH=$$arch -t statping/statping:$$arch-latest --no-cache -f Dockerfile . > /dev/null; \ + docker push statping/statping:$$arch-latest; \ + done + +docker-manifest: docker + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create statping/statping:latest \ + --amend statping/statping:amd64-latest \ + --amend statping/statping:386-latest \ + --amend statping/statping:arm-5-latest \ + --amend statping/statping:arm-6-latest \ + --amend statping/statping:arm-7-latest \ + --amend statping/statping:arm64-latest + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate statping/statping:latest statping/statping:amd64-latest --arch amd64 --os linux + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate statping/statping:latest statping/statping:386-latest --arch 386 --os linux + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate statping/statping:latest statping/statping:arm-5-latest --arch arm --variant v5 --os linux + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate statping/statping:latest statping/statping:arm-6-latest --arch arm --variant v6 --os linux + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate statping/statping:latest statping/statping:arm-7-latest --arch arm --variant v7 --os linux + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest annotate statping/statping:latest statping/statping:arm64-latest --arch arm64 --variant v8 --os linux + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest inspect statping/statping:latest + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push --purge statping/statping:latest + post-release: frontend-build upload_to_s3 publish-homebrew dockerhub # update the homebrew application to latest for mac