MinIO란?
Minio는 AWS 의 S3 SDK 와 호환되는 오픈소스 오브젝트 스토리지 서버 제품이다.
즉 S3와 같이 이미지, 동영상 등의 파일을 저장할 수 있는 저장소인 것이다.
S3 vs MinIO
보통 온라인에 배포할 프로젝트의 경우 S3를 사용하는 경우가 많다.
S3의 경우 비싸지 않은 요금과 쉬운 설정만으로
별도의 큰 관리 없이 SpringBoot와 연결만 잘 된다면
저장소를 신경쓸 일이 그렇게 많지 않다.
그렇지만 이번에 돈을 쓰지 않고 프로젝트에서 저장할 이미지 파일들을 관리하기 위해
MinIO를 컨테이너로 구동하고 실제 프로젝트에 사용하기 위해 설정해보고자 한다.
MinIO 컨테이너 구동하기
MinIO의 경우 PodMan이라는 컨테이너 관리 툴을 이용하는 것을 권장하지만
현재 프로젝트에서 MySQL을 이미 도커 컨테이너로 돌리고 있고
향후 redis를 도입하거나 springboot 서버도 docker-compose로 한번에 컨테이너를 관리할 예정이기 때문에
MinIO도 docker container로 돌리기로 결정하였다.
그래서 이미 존재하는 MinIO 이미지를 docker-compose에 올려 container 구동을 시도하였다.
version: "3.8"
services:
minio:
image: minio/minio
ports:
- "9000:9000"
- "9099:9099"
environment:
MINIO_ROOT_USER: user
MINIO_ROOT_PASSWORD: password
command: server --address ":9099" --console-address ":9000" /data
volumes:
data_volume:
해당 컨테이너를 띄운 후 브라우저로 localhost:9000 혹은 localhost:9099로 접속하면
저장소를 관리할 수 있는 화면이 보인다.

이 화면에서 compose에 설정한 user와 password를 화면에 보이는 username과 password에 입력하면
저장소 안으로 접근이 가능하다.

처음 접속하면 다음과 같은 화면이 나온다.
당연히 처음 접속했기 때문에 아무런 Bucket(일종 저장소 내 폴더 역할) 이나 Object(저장 파일)가 없다.

Buckets 탭으로 들어가면 새로운 버켓을 생성하거나 기존 버켓을 삭제할 수 있는데
오른쪽의 create Bucket을 통해 새롭게 저장 폴더를 생성할 수 있게 된다.

다음과 같이 이름만 넣어주면 쉽게 폴더를 생성할 수 있다.
Buckets 탭에서는 또 해당 Bucket을 삭제할 수도 있는데
이때 그 Bucket 안에 데이터가 들어있으면 삭제가 되지 않으니
삭제를 원할 경우 내부의 모든 데이터를 비워준 다음 삭제해보자

그리고 Object Browser 탭에서 만든 Bucket에 들어가
우측 상단의 upload 버튼을 누르면 아래와 같이 파일을 올릴 수 있게 된다.

해당 데이터를 클릭해보면
오른쪽의 메뉴에서처럼 다운로드를 새로 받을 수도 있고
다른 사람들에게 공유하기 위한 url도 생성이 가능하며
파일의 미리보기와 삭제 기능도 제공하고 있다.
단 공유하기의 경우 12시간 이내로만 가능하도록 설정이 되어 있기 때문에
기간이 만료된다면 다시 접근할 수 없게 된다.

지금까지 MinIO를 docker로 띄우는 법과 간단한 MinIO의 사용방법에 대해 알아봤다.
다음 시리즈로 springboot와 연결해서 사용하는 방법에 대해 알아보고자 한다.
'AWS > S3' 카테고리의 다른 글
| Springboot + MinIO + Docker로 구성한 파일 스토리지(2) (3) | 2023.12.26 |
|---|