2024-11-14 15:33:18 -05:00
FROM golang:1.23-alpine AS build
2017-06-14 05:08:35 -04:00
2020-11-26 12:47:30 -05:00
ARG TARGETARCH
2023-10-28 15:19:49 -04:00
ARG RELEASE
2024-08-26 14:20:46 -04:00
ENV GOPATH = /go
ENV CGO_ENABLED = 0
2023-10-28 15:19:49 -04:00
2024-09-12 11:45:19 -04:00
WORKDIR /build
2023-10-28 15:19:49 -04:00
# Install curl and minisign
RUN apk add -U --no-cache ca-certificates && \
apk add -U --no-cache curl && \
2024-09-12 11:45:19 -04:00
apk add -U --no-cache bash && \
2023-12-08 03:22:22 -05:00
go install aead.dev/minisign/cmd/minisign@v0.2.1
2023-10-28 15:19:49 -04:00
2024-08-15 11:48:04 -04:00
# Download minio binary and signature files
2023-10-28 15:19:49 -04:00
RUN curl -s -q https://dl.min.io/server/minio/release/linux-${ TARGETARCH } /archive/minio.${ RELEASE } -o /go/bin/minio && \
curl -s -q https://dl.min.io/server/minio/release/linux-${ TARGETARCH } /archive/minio.${ RELEASE } .minisig -o /go/bin/minio.minisig && \
2024-08-15 11:48:04 -04:00
curl -s -q https://dl.min.io/server/minio/release/linux-${ TARGETARCH } /archive/minio.${ RELEASE } .sha256sum -o /go/bin/minio.sha256sum && \
2023-10-28 15:19:49 -04:00
chmod +x /go/bin/minio
2024-08-15 11:48:04 -04:00
# Download mc binary and signature files
2023-10-28 15:19:49 -04:00
RUN curl -s -q https://dl.min.io/client/mc/release/linux-${ TARGETARCH } /mc -o /go/bin/mc && \
2023-11-01 14:37:25 -04:00
curl -s -q https://dl.min.io/client/mc/release/linux-${ TARGETARCH } /mc.minisig -o /go/bin/mc.minisig && \
2024-08-15 11:48:04 -04:00
curl -s -q https://dl.min.io/client/mc/release/linux-${ TARGETARCH } /mc.sha256sum -o /go/bin/mc.sha256sum && \
2023-11-01 14:37:25 -04:00
chmod +x /go/bin/mc
2023-10-28 15:19:49 -04:00
# Verify binary signature using public key "RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGavRUN"
RUN minisign -Vqm /go/bin/minio -x /go/bin/minio.minisig -P RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav && \
minisign -Vqm /go/bin/mc -x /go/bin/mc.minisig -P RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav
2024-09-12 11:45:19 -04:00
COPY dockerscripts/download-static-curl.sh /build/download-static-curl
RUN chmod +x /build/download-static-curl && \
/build/download-static-curl
2023-11-01 14:37:25 -04:00
FROM registry.access.redhat.com/ubi9/ubi-micro:latest
2020-11-26 12:47:30 -05:00
2021-03-10 12:41:44 -05:00
ARG RELEASE
2020-12-08 14:14:06 -05:00
LABEL name = "MinIO" \
vendor = "MinIO Inc <dev@min.io>" \
maintainer = "MinIO Inc <dev@min.io>" \
2021-03-10 12:41:44 -05:00
version = " ${ RELEASE } " \
release = " ${ RELEASE } " \
2020-12-08 14:14:06 -05:00
summary = "MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service." \
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."
2018-04-24 12:57:48 -04:00
2021-04-29 13:55:05 -04:00
ENV MINIO_ACCESS_KEY_FILE = access_key \
MINIO_SECRET_KEY_FILE = secret_key \
MINIO_ROOT_USER_FILE = access_key \
2021-01-05 13:22:57 -05:00
MINIO_ROOT_PASSWORD_FILE = secret_key \
2021-04-22 11:45:30 -04:00
MINIO_KMS_SECRET_KEY_FILE = kms_master_key \
2021-07-14 19:55:59 -04:00
MINIO_UPDATE_MINISIGN_PUBKEY = "RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" \
2021-09-10 01:19:11 -04:00
MINIO_CONFIG_ENV_FILE = config.env \
2023-10-28 15:19:49 -04:00
MC_CONFIG_DIR = /tmp/.mc
2024-09-15 19:10:19 -04:00
RUN chmod -R 777 /usr/bin
2024-09-01 07:25:07 -04:00
2023-10-28 15:19:49 -04:00
COPY --from= build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
2024-08-18 03:13:33 -04:00
COPY --from= build /go/bin/minio* /usr/bin/
COPY --from= build /go/bin/mc* /usr/bin/
2024-09-12 11:45:19 -04:00
COPY --from= build /go/bin/curl* /usr/bin/
2017-12-15 15:33:42 -05:00
2020-11-26 12:47:30 -05:00
COPY CREDITS /licenses/CREDITS
COPY LICENSE /licenses/LICENSE
2023-10-28 15:19:49 -04:00
COPY dockerscripts/docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
2017-06-14 05:08:35 -04:00
EXPOSE 9000
2018-03-13 21:29:27 -04:00
VOLUME [ "/data" ]
2017-06-14 05:08:35 -04:00
2023-10-28 15:19:49 -04:00
ENTRYPOINT [ "/usr/bin/docker-entrypoint.sh" ]
2017-06-14 05:08:35 -04:00
CMD [ "minio" ]