Or maybe try this to build the prerelease for docker

```

FROM alpine:latest

# Install dependencies for downloading and extracting releases

RUN apk add --no-cache ca-certificates curl jq unzip tar gzip wget

WORKDIR /tmp

# Detect architecture and download appropriate pre-release

RUN ARCH=$(uname -m) && \

case $ARCH in \

x86_64) GRAIN_ARCH="amd64" ;; \

aarch64) GRAIN_ARCH="arm64" ;; \

*) echo "Unsupported architecture: $ARCH" && exit 1 ;; \

esac && \

echo "Detected architecture: $ARCH -> grain-linux-$GRAIN_ARCH" && \

PRERELEASE_VERSION=$(curl -s https://api.github.com/repos/0ceanslim/grain/releases | jq -r '.[] | select(.prerelease == true) | .tag_name' | head -n1) && \

if [ -z "$PRERELEASE_VERSION" ]; then \

echo "No pre-release found, falling back to latest release" && \

PRERELEASE_VERSION=$(curl -s https://api.github.com/repos/0ceanslim/grain/releases/latest | jq -r .tag_name); \

fi && \

echo "Downloading GRAIN pre-release version: $PRERELEASE_VERSION for linux-$GRAIN_ARCH" && \

DOWNLOAD_URL="https://github.com/0ceanslim/grain/releases/download/$PRERELEASE_VERSION/grain-linux-$GRAIN_ARCH.tar.gz" && \

curl -L "$DOWNLOAD_URL" -o grain-release.tar.gz && \

echo "Extracting release..." && \

tar -xzf grain-release.tar.gz && \

EXTRACTED_DIR=$(tar -tzf grain-release.tar.gz | head -1 | cut -f1 -d"/") && \

echo "Moving files from $EXTRACTED_DIR to /app..." && \

mkdir -p /app && \

mv "$EXTRACTED_DIR"/* /app/ && \

chmod +x /app/grain && \

rm -rf /tmp/*

WORKDIR /app

# Create non-root user for security

RUN addgroup -g 1001 grain && \

adduser -D -s /bin/sh -u 1001 -G grain grain && \

chown -R grain:grain /app

USER grain

EXPOSE 8181

HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \

CMD wget --no-verbose --tries=1 --spider http://localhost:8181/ || exit 1

CMD ["./grain"]

```

Reply to this note

Please Login to reply.

Discussion

No replies yet.