Skip to content

Commit

Permalink
feat: add arm docker build
Browse files Browse the repository at this point in the history
  • Loading branch information
JeancarloBarrios committed Oct 30, 2023
1 parent 9c4fe18 commit e76a59b
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 2 deletions.
12 changes: 11 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@ jobs:
- name: Check out the repo
uses: actions/checkout@v4

- name: Setup QEMU
uses: docker/setup-qemu-action@v3

- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
Expand All @@ -66,7 +72,11 @@ jobs:
uses: docker/build-push-action@v5
with:
context: .
file: ./dockerfiles/Dockerfile.node
file: ./dockers/Dockerfile.node-static
platforms: linux/amd64,linux/arm64
GO_VERSION: "1.21"
RUNNER_IMAGE: "gcr.io/distroless/static-debian11:nonroot"

push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
76 changes: 76 additions & 0 deletions dockerfiles/Dockerfile.node-static
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# syntax=docker/dockerfile:1
ARG GO_VERSION="1.20"
ARG RUNNER_IMAGE="gcr.io/distroless/static-debian11"

# --------------------------------------------------------
# Builder
# --------------------------------------------------------

FROM golang:${GO_VERSION}-alpine as builder

ARG GIT_VERSION
ARG GIT_COMMIT

RUN apk add --no-cache \
ca-certificates \
build-base \
linux-headers

# Download go dependencies
WORKDIR /seda-chain
COPY go.mod go.sum ./
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
go mod download

# Cosmwasm - Download correct libwasmvm version
RUN ARCH=$(uname -m) && WASMVM_VERSION=$(go list -m github.com/CosmWasm/wasmvm | sed 's/.* //') && \
wget https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/libwasmvm_muslc.$ARCH.a \
-O /lib/libwasmvm_muslc.a && \
# verify checksum
wget https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/checksums.txt -O /tmp/checksums.txt && \
sha256sum /lib/libwasmvm_muslc.a | grep $(cat /tmp/checksums.txt | grep libwasmvm_muslc.$ARCH | cut -d ' ' -f 1)

# Copy the remaining files
COPY . .

# Build seda-chiand binary
RUN --mount=type=cache,target=/root/.cache/go-build \
--mount=type=cache,target=/root/go/pkg/mod \
GOWORK=off go build -v \
-mod=readonly \
-tags "netgo,ledger,muslc" \
-ldflags \
"-X github.com/cosmos/cosmos-sdk/version.Name="seda-chain" \
-X github.com/cosmos/cosmos-sdk/version.AppName="seda-chaind" \
-X github.com/cosmos/cosmos-sdk/version.Version=${GIT_VERSION} \
-X github.com/cosmos/cosmos-sdk/version.Commit=${GIT_COMMIT} \
-X github.com/cosmos/cosmos-sdk/version.BuildTags=netgo,ledger,muslc \
-w -s -linkmode=external -extldflags '-Wl,-z,muldefs -static'" \
-trimpath \
-o /seda-chain/build/seda-chaind \
cmd/seda-chaind/main.go
# --------- To include chmod and shell for static image
FROM busybox:1.35.0-uclibc as busybox
# --------------------------------------------------------
# Runner
# --------------------------------------------------------
FROM ${RUNNER_IMAGE}

COPY --from=busybox ["/bin/sh", "/bin/chmod", "/bin/chown", "/bin/mkdir", "/bin/"]
RUN mkdir -p /seda-chain/.seda-chain && chown nonroot:nonroot -R /seda-chain/.seda-chain

USER nonroot
COPY --from=builder --chown=nonroot:nonroot /seda-chain/build/seda-chaind /bin/seda-chaind

ENV HOME /seda-chain
WORKDIR $HOME

EXPOSE 26656
EXPOSE 26657
EXPOSE 1317
EXPOSE 9090

COPY --chown=nonroot:nonroot scripts/validator_setup/validator_setup.sh .
RUN chmod +x validator_setup.sh
ENTRYPOINT ["sh", "validator_setup.sh"]
2 changes: 1 addition & 1 deletion scripts/validator_setup/validator_setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ echo "Initializing Node ..."

# Check if configuration directory seda-chain config directory exist if it does not
# exist initialize the node with the given MNEMONIC, MONIKER and NETWORK_ID
if ! [ -f /root/.seda-chain/config/genesis.json ]; then
if ! [ -f /seda-chain/.seda-chain/config/genesis.json ]; then
echo "Setting Up seda configuration"
$BIN config keyring-backend file # use file backend
echo $MNEMONIC | $BIN init join ${MONIKER} --network ${NETWORK_ID} --recover
Expand Down

0 comments on commit e76a59b

Please sign in to comment.