minio + imgproxy 实现文件存储
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、访问测试
# 若配置环境变量 IMGPROXY_BASE_URL,只能访问对应地址的图片,域名可省略 http://localhost:8080/_/rs:auto:300:800/plain/test/001.png 或 http://localhost:8080/_/rs:auto:300:800/plain/http://minio-alias1:9000/test/001.png
# 若没有配置环境变量 IMGPROXY_BASE_URL,需输入完整图片地址 http://localhost:8080/_/rs:auto:300:800/plain/https://www.baidu.com/img/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。