You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
3.1 KiB

  1. FROM golang:1.23-alpine as build
  2. ARG TARGETARCH
  3. ARG RELEASE
  4. ENV GOPATH=/go
  5. ENV CGO_ENABLED=0
  6. # Install curl and minisign
  7. RUN apk add -U --no-cache ca-certificates && \
  8. apk add -U --no-cache curl && \
  9. go install aead.dev/minisign/cmd/minisign@v0.2.1
  10. # Download minio binary and signature files
  11. RUN curl -s -q https://dl.min.io/server/minio/hotfixes/linux-${TARGETARCH}/archive/minio.${RELEASE} -o /go/bin/minio && \
  12. curl -s -q https://dl.min.io/server/minio/hotfixes/linux-${TARGETARCH}/archive/minio.${RELEASE}.minisig -o /go/bin/minio.minisig && \
  13. curl -s -q https://dl.min.io/server/minio/hotfixes/linux-${TARGETARCH}/archive/minio.${RELEASE}.sha256sum -o /go/bin/minio.sha256sum && \
  14. chmod +x /go/bin/minio
  15. # Download mc binary and signature files
  16. RUN curl -s -q https://dl.min.io/client/mc/release/linux-${TARGETARCH}/mc -o /go/bin/mc && \
  17. curl -s -q https://dl.min.io/client/mc/release/linux-${TARGETARCH}/mc.minisig -o /go/bin/mc.minisig && \
  18. curl -s -q https://dl.min.io/client/mc/release/linux-${TARGETARCH}/mc.sha256sum -o /go/bin/mc.sha256sum && \
  19. chmod +x /go/bin/mc
  20. RUN if [ "$TARGETARCH" = "amd64" ]; then \
  21. curl -L -s -q https://github.com/moparisthebest/static-curl/releases/latest/download/curl-${TARGETARCH} -o /go/bin/curl; \
  22. chmod +x /go/bin/curl; \
  23. fi
  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. FROM registry.access.redhat.com/ubi9/ubi-micro:latest
  28. ARG RELEASE
  29. LABEL name="MinIO" \
  30. vendor="MinIO Inc <dev@min.io>" \
  31. maintainer="MinIO Inc <dev@min.io>" \
  32. version="${RELEASE}" \
  33. release="${RELEASE}" \
  34. summary="MinIO is a High Performance Object Storage, API compatible with Amazon S3 cloud storage service." \
  35. 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."
  36. ENV MINIO_ACCESS_KEY_FILE=access_key \
  37. MINIO_SECRET_KEY_FILE=secret_key \
  38. MINIO_ROOT_USER_FILE=access_key \
  39. MINIO_ROOT_PASSWORD_FILE=secret_key \
  40. MINIO_KMS_SECRET_KEY_FILE=kms_master_key \
  41. MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav" \
  42. MINIO_CONFIG_ENV_FILE=config.env \
  43. MC_CONFIG_DIR=/tmp/.mc
  44. RUN chmod -R 777 /usr/bin
  45. COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
  46. COPY --from=build /go/bin/minio* /usr/bin/
  47. COPY --from=build /go/bin/mc* /usr/bin/
  48. COPY --from=build /go/bin/cur* /usr/bin/
  49. COPY CREDITS /licenses/CREDITS
  50. COPY LICENSE /licenses/LICENSE
  51. COPY dockerscripts/docker-entrypoint.sh /usr/bin/docker-entrypoint.sh
  52. EXPOSE 9000
  53. VOLUME ["/data"]
  54. ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
  55. CMD ["minio"]