From da47794005a2fd2978b839041e446102e58bf6e6 Mon Sep 17 00:00:00 2001 From: Karoly Albert Szabo Date: Wed, 20 Feb 2019 12:37:52 +0100 Subject: [PATCH 1/3] remove hashed versions in favour of tagged ones: - release every new tag on github - two docker images with single entrypoint offered - We will use two separate docker images as gaiacli can refer to a remote gaiad - gaiali can scale and eventually be attacked while gaiad will keep live Signed-off-by: Karoly Albert Szabo --- .circleci/config.yml | 27 ++++++++++++++++++++++++--- Dockerfile.gaiacli | 30 ++++++++++++++++++++++++++++++ Dockerfile.gaiad | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 Dockerfile.gaiacli create mode 100644 Dockerfile.gaiad diff --git a/.circleci/config.yml b/.circleci/config.yml index 5a4df533b158..7653972dacc2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -331,9 +331,20 @@ jobs: docker login -u $DOCKER_USER -p $DOCKER_PASS docker push tendermint/gaia:$GAIAD_VERSION - # Push the tag also for the version, so clients can build up on top of it - GAIAD_VERSION=`/tmp/workspace/bin/gaiad version` - docker push tendermint/gaia:$GAIAD_VERSION + docker_tagged: + <<: *linux_defaults + steps: + - attach_workspace: + at: /tmp/workspace + - checkout + - setup_remote_docker: + docker_layer_caching: true + - run: | + docker build -t tendermint/gaiad:$CIRCLE_TAG --file ./Dockerfile.gaiad . + docker build -t tendermint/gaiacli:$CIRCLE_TAG --file ./Dockerfile.gaiacli . + docker login -u $DOCKER_USER -p $DOCKER_PASS + docker push tendermint/gaiad:$CIRCLE_TAG + docker push tendermint/gaiacli:$CIRCLE_TAG workflows: version: 2 @@ -347,6 +358,16 @@ workflows: - develop requires: - setup_dependencies + - docker_tagged: + filters: + tags: + only: + - /^v.*/ + branches: + ignore: + - /.*/ + requires: + - setup_dependencies - macos_ci: filters: branches: diff --git a/Dockerfile.gaiacli b/Dockerfile.gaiacli new file mode 100644 index 000000000000..5d2c24fe989f --- /dev/null +++ b/Dockerfile.gaiacli @@ -0,0 +1,30 @@ +# Simple usage with a mounted data directory: +# > docker build -t gaiacli . +FROM golang:alpine AS build-env + +# Set up dependencies +ENV PACKAGES make git libc-dev bash gcc linux-headers eudev-dev + +# Set working directory for the build +WORKDIR /go/src/github.com/cosmos/cosmos-sdk + +# Add source files +COPY . . + +# Install minimum necessary dependencies, build Cosmos SDK, remove packages +RUN apk add --no-cache $PACKAGES && \ + make tools && \ + make vendor-deps && \ + make build && \ + make install + +# Final image +FROM alpine:3.9 + +# Install ca-certificates +RUN apk add --update ca-certificates +WORKDIR /root + +# Copy over binaries from the build-env +COPY --from=build-env /go/bin/gaiacli /bin/gaiacli +ENTRYPOINT ["/bin/gaiacli"] diff --git a/Dockerfile.gaiad b/Dockerfile.gaiad new file mode 100644 index 000000000000..e430cb57c139 --- /dev/null +++ b/Dockerfile.gaiad @@ -0,0 +1,32 @@ +# Simple usage with a mounted data directory: +# > docker build -t gaia . +# > docker run -it -p 26657:26657 -p 26656:26656 -v ~/.gaiad:/root/.gaiad gaia gaiad init +# > docker run -it -p 26657:26657 -p 26656:26656 -v ~/.gaiad:/root/.gaiad gaia gaiad start +FROM golang:alpine AS build-env + +# Set up dependencies +ENV PACKAGES make git libc-dev bash gcc linux-headers eudev-dev + +# Set working directory for the build +WORKDIR /go/src/github.com/cosmos/cosmos-sdk + +# Add source files +COPY . . + +# Install minimum necessary dependencies, build Cosmos SDK, remove packages +RUN apk add --no-cache $PACKAGES && \ + make tools && \ + make vendor-deps && \ + make build && \ + make install + +# Final image +FROM alpine:3.9 + +# Install ca-certificates +RUN apk add --update ca-certificates +WORKDIR /root + +# Copy over binaries from the build-env +COPY --from=build-env /go/bin/gaiad /bin/gaiad +ENTRYPOINT ["/bin/gaiad"] From 3c53d407f150e15edf9776d4501cc5fa96abd5ef Mon Sep 17 00:00:00 2001 From: Karoly Albert Szabo Date: Fri, 22 Feb 2019 18:15:19 +0100 Subject: [PATCH 2/3] Release same image as usual, just with tags Signed-off-by: Karoly Albert Szabo --- .circleci/config.yml | 6 ++---- Dockerfile.gaiacli | 30 ------------------------------ Dockerfile.gaiad | 32 -------------------------------- 3 files changed, 2 insertions(+), 66 deletions(-) delete mode 100644 Dockerfile.gaiacli delete mode 100644 Dockerfile.gaiad diff --git a/.circleci/config.yml b/.circleci/config.yml index 7653972dacc2..ed1d54f2dfb7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -340,11 +340,9 @@ jobs: - setup_remote_docker: docker_layer_caching: true - run: | - docker build -t tendermint/gaiad:$CIRCLE_TAG --file ./Dockerfile.gaiad . - docker build -t tendermint/gaiacli:$CIRCLE_TAG --file ./Dockerfile.gaiacli . + docker build -t tendermint/gaia:$CIRCLE_TAG . docker login -u $DOCKER_USER -p $DOCKER_PASS - docker push tendermint/gaiad:$CIRCLE_TAG - docker push tendermint/gaiacli:$CIRCLE_TAG + docker push tendermint/gaia:$CIRCLE_TAG workflows: version: 2 diff --git a/Dockerfile.gaiacli b/Dockerfile.gaiacli deleted file mode 100644 index 5d2c24fe989f..000000000000 --- a/Dockerfile.gaiacli +++ /dev/null @@ -1,30 +0,0 @@ -# Simple usage with a mounted data directory: -# > docker build -t gaiacli . -FROM golang:alpine AS build-env - -# Set up dependencies -ENV PACKAGES make git libc-dev bash gcc linux-headers eudev-dev - -# Set working directory for the build -WORKDIR /go/src/github.com/cosmos/cosmos-sdk - -# Add source files -COPY . . - -# Install minimum necessary dependencies, build Cosmos SDK, remove packages -RUN apk add --no-cache $PACKAGES && \ - make tools && \ - make vendor-deps && \ - make build && \ - make install - -# Final image -FROM alpine:3.9 - -# Install ca-certificates -RUN apk add --update ca-certificates -WORKDIR /root - -# Copy over binaries from the build-env -COPY --from=build-env /go/bin/gaiacli /bin/gaiacli -ENTRYPOINT ["/bin/gaiacli"] diff --git a/Dockerfile.gaiad b/Dockerfile.gaiad deleted file mode 100644 index e430cb57c139..000000000000 --- a/Dockerfile.gaiad +++ /dev/null @@ -1,32 +0,0 @@ -# Simple usage with a mounted data directory: -# > docker build -t gaia . -# > docker run -it -p 26657:26657 -p 26656:26656 -v ~/.gaiad:/root/.gaiad gaia gaiad init -# > docker run -it -p 26657:26657 -p 26656:26656 -v ~/.gaiad:/root/.gaiad gaia gaiad start -FROM golang:alpine AS build-env - -# Set up dependencies -ENV PACKAGES make git libc-dev bash gcc linux-headers eudev-dev - -# Set working directory for the build -WORKDIR /go/src/github.com/cosmos/cosmos-sdk - -# Add source files -COPY . . - -# Install minimum necessary dependencies, build Cosmos SDK, remove packages -RUN apk add --no-cache $PACKAGES && \ - make tools && \ - make vendor-deps && \ - make build && \ - make install - -# Final image -FROM alpine:3.9 - -# Install ca-certificates -RUN apk add --update ca-certificates -WORKDIR /root - -# Copy over binaries from the build-env -COPY --from=build-env /go/bin/gaiad /bin/gaiad -ENTRYPOINT ["/bin/gaiad"] From 8fc583de933b64f27984fc8858a5aa740188be8f Mon Sep 17 00:00:00 2001 From: Karoly Albert Szabo Date: Fri, 22 Feb 2019 18:36:51 +0100 Subject: [PATCH 3/3] Update documentation on deploying and PENDING Signed-off-by: Karoly Albert Szabo --- PENDING.md | 1 + docs/gaia/deploy-testnet.md | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/PENDING.md b/PENDING.md index bfe66c6e3385..e01a0d453575 100644 --- a/PENDING.md +++ b/PENDING.md @@ -46,6 +46,7 @@ ### SDK * [\#3665] Overhaul sdk.Uint type in preparation for Coins's Int -> Uint migration. +* [\#3694] Push tagged docker images on docker hub when tag is created. ### Tendermint diff --git a/docs/gaia/deploy-testnet.md b/docs/gaia/deploy-testnet.md index a91c6d09c6f2..de57f71da33c 100644 --- a/docs/gaia/deploy-testnet.md +++ b/docs/gaia/deploy-testnet.md @@ -10,6 +10,16 @@ Supporting code can be found in the [networks directory](https://github.com/cosm > NOTE: The `remote` network bootstrapping may be out of sync with the latest releases and is not to be relied upon. +## Available Docker images + +In case you need to use or deploy gaia as a container you could skip the `build` steps and use the official images, $TAG stands for the version you are interested in: +- `docker run -it -v ~/.gaiad:/root/.gaiad -v ~/.gaiacli:/root/.gaiacli tendermint:$TAG gaiad init` +- `docker run -it -p 26657:26657 -p 26656:26656 -v ~/.gaiad:/root/.gaiad -v ~/.gaiacli:/root/.gaiacli tendermint:$TAG gaiad start` +- ... +- `docker run -it -v ~/.gaiad:/root/.gaiad -v ~/.gaiacli:/root/.gaiacli tendermint:$TAG gaiacli version` + +The same images can be used to build your own docker-compose stack. + ## Single-node, local, manual testnet This guide helps you create a single validator node that runs a network locally for testing and other development related uses.