diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ccb371f5f..d7ed13b80 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -14,9 +14,6 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v2 - with: - go-version: "1.15" - uses: actions/checkout@master - name: Prepare id: prep @@ -37,6 +34,11 @@ jobs: fi echo ::set-output name=tags::${TAGS} + - name: Set up QEMU + uses: docker/setup-qemu-action@master + with: + platforms: all + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 @@ -47,14 +49,11 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build Tendermint - run: | - make build-linux && cp build/tendermint DOCKER/tendermint - - name: Publish to Docker Hub uses: docker/build-push-action@v2 with: - context: ./DOCKER + context: . file: ./DOCKER/Dockerfile + platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.prep.outputs.tags }} diff --git a/DOCKER/Dockerfile b/DOCKER/Dockerfile index a4ce89e47..79b1e9b5f 100644 --- a/DOCKER/Dockerfile +++ b/DOCKER/Dockerfile @@ -1,4 +1,14 @@ -FROM alpine:3.9 +# stage 1 Generate Tendermint Binary +FROM golang:1.15-alpine as builder +RUN apk update && \ + apk upgrade && \ + apk --no-cache add make +COPY / /tendermint +WORKDIR /tendermint +RUN make build-linux + +# stage 2 +FROM golang:1.15-alpine LABEL maintainer="hello@tendermint.com" # Tendermint will be looking for the genesis file in /tendermint/config/genesis.json @@ -29,15 +39,14 @@ EXPOSE 26656 26657 26660 STOPSIGNAL SIGTERM -ARG BINARY=tendermint -COPY $BINARY /usr/bin/tendermint +COPY --from=builder /tendermint/build/tendermint /usr/bin/tendermint # You can overwrite these before the first run to influence # config.json and genesis.json. Additionally, you can override # CMD to add parameters to `tendermint node`. ENV PROXY_APP=kvstore MONIKER=dockernode CHAIN_ID=dockerchain -COPY ./docker-entrypoint.sh /usr/local/bin/ +COPY ./DOCKER/docker-entrypoint.sh /usr/local/bin/ ENTRYPOINT ["docker-entrypoint.sh"] CMD ["start"]