github.com/minio/minio@v0.0.0-20240328213742-3f72439b8a27/Dockerfile.release (about)

     1  FROM golang:1.21-alpine as build
     2  
     3  ARG TARGETARCH
     4  ARG RELEASE
     5  
     6  ENV GOPATH /go
     7  ENV CGO_ENABLED 0
     8  
     9  # Install curl and minisign
    10  RUN apk add -U --no-cache ca-certificates && \
    11      apk add -U --no-cache curl && \
    12      go install aead.dev/minisign/cmd/minisign@v0.2.1
    13  
    14  # Download minio binary and signature file
    15  RUN curl -s -q https://dl.min.io/server/minio/release/linux-${TARGETARCH}/archive/minio.${RELEASE} -o /go/bin/minio && \
    16      curl -s -q https://dl.min.io/server/minio/release/linux-${TARGETARCH}/archive/minio.${RELEASE}.minisig -o /go/bin/minio.minisig && \
    17      chmod +x /go/bin/minio
    18  
    19  # Download mc binary and signature file
    20  RUN curl -s -q https://dl.min.io/client/mc/release/linux-${TARGETARCH}/mc -o /go/bin/mc && \
    21      curl -s -q https://dl.min.io/client/mc/release/linux-${TARGETARCH}/mc.minisig -o /go/bin/mc.minisig && \
    22      chmod +x /go/bin/mc
    23  
    24  # Verify binary signature using public key "RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGavRUN"
    25  RUN minisign -Vqm /go/bin/minio -x /go/bin/minio.minisig -P RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav && \
    26      minisign -Vqm /go/bin/mc -x /go/bin/mc.minisig -P RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav
    27  
    28  FROM registry.access.redhat.com/ubi9/ubi-micro:latest
    29  
    30  ARG RELEASE
    31  
    32  LABEL name="MinIO" \
    33        vendor="MinIO Inc <dev@min.io>" \
    34        maintainer="MinIO Inc <dev@min.io>" \
    35        version="${RELEASE}" \
    36        release="${RELEASE}" \
    37        summary="MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service." \
    38        description="MinIO object storage is fundamentally different. Designed for performance and the S3 API, it is 100% open-source. MinIO is ideal for large, private cloud environments with stringent security requirements and delivers mission-critical availability across a diverse range of workloads."
    39  
    40  ENV MINIO_ACCESS_KEY_FILE=access_key \
    41      MINIO_SECRET_KEY_FILE=secret_key \
    42      MINIO_ROOT_USER_FILE=access_key \
    43      MINIO_ROOT_PASSWORD_FILE=secret_key \
    44      MINIO_KMS_SECRET_KEY_FILE=kms_master_key \
    45      MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" \
    46      MINIO_CONFIG_ENV_FILE=config.env \
    47      MC_CONFIG_DIR=/tmp/.mc
    48  
    49  COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
    50  COPY --from=build /go/bin/minio /usr/bin/minio
    51  COPY --from=build /go/bin/mc /usr/bin/mc
    52  
    53  COPY CREDITS /licenses/CREDITS
    54  COPY LICENSE /licenses/LICENSE
    55  COPY dockerscripts/docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
    56  
    57  EXPOSE 9000
    58  VOLUME ["/data"]
    59  
    60  ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
    61  CMD ["minio"]