使用Docker搭建MinIO私有图库并提供API调用

1,097 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

本文主要介绍通过 docker 安装 MinIO 私有图库,以及使用 Java SDK 搭建后端 api,方便第三方调用

前期准备工作

  • 一台电脑/服务器

  • 已安装 docker

    # 使用 docker -v 检查
    > docker -v
    Docker version 20.10.21, build baeda1f
    
  • 官方文档地址

安装 MinIO

拉取 docker 镜像

> docker pull quay.io/minio/minio
Using default tag: latest
latest: Pulling from minio/minio
a6577091999b: Already exists
19d73440ce8d: Pull complete
143ca56f71a1: Pull complete
bfce29e50337: Pull complete
57b0be0ba318: Pull complete
4a15e8c1e565: Pull complete
Digest: sha256:afeb8e9880ef7aa2952f592925eb8942378e0e7b3a5af8a20dee4d5558a9bea9
Status: Downloaded newer image for quay.io/minio/minio:latest
quay.io/minio/minio:latest# 查看 docker images
> docker images
REPOSITORY            TAG       IMAGE ID       CREATED       SIZE
quay.io/minio/minio   latest    2bca66a480f6   3 hours ago   311MB
​

创建挂载 data 目录

# 创建 ~/minio/data 文件夹
mkdir -p ~/minio/data

创建容器,同时后台启动 minio

# 40000:9000 代表服务器本地的端口是 40000,映射到 docker 内部的9000。40000 是文件 api 端口
# 40001:9090 代表服务器本地的端口是 40001,映射到 docker 内部的9090。40001 是控制台端口
# MINIO_ROOT_USER 代表第一个管理员的账号
# MINIO_ROOT_PASSWORD 代表第一个管理员的密码,这两个都可以按照自己需求设置
> docker run -d \
   -p 40000:9000 \
   -p 40001:9090 \
   --name minio \
   -v ~/minio/data:/data \
   -e "MINIO_ROOT_USER=admin" \
   -e "MINIO_ROOT_PASSWORD=Admin123" \
   quay.io/minio/minio server /data --console-address ":9090"
   
# dc36a2643235f7f86472140cb45cae396a8af6922f9e1e865721952fa76cb859

创建成功,查看

# 使用 docker ps 查看正在运行的容器
> docker ps 
CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS              PORTS                                                                                      NAMES
dc36a2643235   quay.io/minio/minio   "/usr/bin/docker-ent…"   About a minute ago   Up About a minute   0.0.0.0:40000->9000/tcp, :::40000->9000/tcp, 0.0.0.0:40001->9090/tcp, :::40001->9090/tcp   minio

打开网址,创建 buckets

打开网址: http://localhost:40001

如果在服务器上,则将 localhost 修改为 ip,同时别忘记将 40000 和 40001 端口设置通过防火墙。

输入账号密码

admin / Admin123

登录成功,创建 buckets

点击 create Bucket + 添加 Buckets,然后就可以本地上传图片了

image-20221213151117889

创建 Access Keys

为了能够使用 sdk 操作图片,可以创建 Access Keys。创建完成后,只显示一次,需要记录下来,以方便之后使用。

image-20221213151407704

使用 Java SDK 搭建后端 api

代码地址

Gitee代码: https://gitee.com/yuestone-info/minio_backend

# 修改 src/main/resources/application.xml
# 将上方记录的 Access Keys 填充到此处即可

# 文件系统
minio:
  endpoint: http://ip:port
  access-key: 控制台获取
  secret-key: 控制台获取
  bucket-name: 名称
 ...

jar 包

# 使用 mvn clean install 打包成 jar
mvn clean install

# 使用 `java -jar minio-0.0.1-SNAPSHOT.jar` 运行
java -jar minio-0.0.1-SNAPSHOT.jar

运行成功,请求测试

image-20221213160020717