阅读

minio + imgproxy 实现文件存储

software  2024-03-13 17:31

1、config.env

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment

MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me

# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.

MINIO_VOLUMES="/mnt/data"

# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# 例如, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9001"

# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine

# Uncomment the following line and replace the value with the correct hostname for the local machine and port for the MinIO server (9000 by default).

#MINIO_SERVER_URL="http://minio.example.net:9000"

2、docker-compose.yml

  minio-alias1:
    container_name: "minio-alias1"
    hostname: "minio-alias1"
    image: "minio/minio"
    command: [
        "minio",
        "server",
        "--console-address",
        ":9001"
    ]
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_CONFIG_ENV_FILE: /etc/config.env
    networks:
      network-01:
        aliases:
          - minio-net1
    restart: always
    volumes:
      - "E:/config/minio/config.env:/etc/config.env"
      - "E:/data/minio:/mnt/data"

  imgproxy-alias1:
    container_name: "imgproxy-alias1"
    hostname: "imgproxy-alias1"
    image: "darthsim/imgproxy"
    ports:
      - "8080:8080"
    environment:
      IMGPROXY_BASE_URL: "http://minio-alias1:9000/"
    networks:
      network-01:
        aliases:
          - imgproxy-net1
    restart: always

3、访问测试

    http://localhost:8080/_/rs:auto:300:800/plain/test/001.png

3.1 如果使用签名访问,后面的链接需要使用url编码,例:

    http://localhost:8080/_/rs:auto:300:800/plain/test%2F001.png%3FX-Amz-xxx

# Resize
resize:%resizing_type:%width:%height:%enlarge:%extend
rs:%resizing_type:%width:%height:%enlarge:%extend

#  This is a meta-option that defines the resizing type, width, height, enlarge, and extend.
#  All arguments are optional and can be omitted to use their default values.

# resizing_type Default: fit
fit:调整图像大小,同时保持宽高比以适合给定的大小。
fill:调整图像大小,同时保持纵横比以填充给定大小并裁剪投影部分。
fill-down:与fill相同,但如果调整后的图像小于请求的大小,imgproxy将裁剪结果以保持请求的宽高比。
force:调整图像大小而不保持纵横比。
auto:如果源尺寸和结果尺寸具有相同的方向(纵向或横向),imgproxy将使用fill。否则,它将使用fit。

4、minio文档minio官网

5、imgproxy文档