S3과 동등한 기능을 가진 MinIO 사용 방법 docker-compose 사용
개요
여러 장소의 사정(계약 문제나 예산 등)에서 AWS 서비스를 사용할 수 없는 상황에서도 개발하기 위해 docker에서 사용할 수 있도록 해 보았습니다.
타이틀은 MinIO이지만 그 밖에 DynamoDB, MySQL도 사용할 수 있도록 하고 있습니다.
사전 준비
docker-compose
docker-compose 로 기동시키기 위한 yml 를 작성합니다.공식 을 참고로 작성합니다.
Invalid command line arguments: use path style endpoint for FS setup. 의 에러가 되어 버렸으므로 여기 를 참고로 수정했습니다. version: '3.7'
services:
dynamodb-local:
build: ./dynamodb
volumes:
- dynamodb_data:/home/dynamodblocal/data
ports:
- 8000:8000
command: -jar DynamoDBLocal.jar -dbPath ./data
mysql:
image: mysql:5.7
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 'password'
ports:
- 3306:3306
minio1:
image: minio/minio:RELEASE.2020-08-27T05-16-20Z
volumes:
- data1-1:/data1
- data1-2:/data2
ports:
- "9000:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minio123
command: server data1
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
volumes:
dynamodb_data:
db_data: {}
data1-1:
data1-2:
FROM amazon/dynamodb-local
WORKDIR /home/dynamodblocal
# UID=1000 → DynamoDB Local の実行ユーザ
RUN mkdir data && chown -R 1000 data
Docker Quickstart Terminal의 경우 IP 주소 부분을 docker 시작 시 표시되는 IP로 읽어 보십시오.
minio1_1 | Endpoint: http://172.20.0.4:9000 http://127.0.0.1:9000
minio1_1 |
minio1_1 | Browser Access:
minio1_1 | http://172.20.0.4:9000 http://127.0.0.1:9000
http://192.168.99.100:9000/minio/ (Docker Quickstart Terminal 때문에 IP 주소가 다릅니다)에 액세스 하는 것으로 브라우저상에서 버킷안등을 확인이나 작성등을 실시할 수가 있습니다. S3 기능 구현
os.path.join로 만들면 \\로 연결되어 버리므로 replace로 변환하고 있습니다. import boto3
import os
from datetime import datetime
endpoint_url = os.getenv('S3_ENDPOINT', 'http://192.168.99.100:9000/')
aws_access_key_id = os.getenv('S3_ACCESS_KEY_ID', 'minio')
aws_secret_access_key_id = os.getenv('S3_SECRET_ACCESS_KEY_ID', 'minio123')
s3 = boto3.resource(
's3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key_id,
endpoint_url=endpoint_url
)
bucket=s3.Bucket('testbukcet')
bucket.create()
bucketPath=os.path.join('dir',datetime.now().strftime('%Y%m%d%H%M%S'),'out','test.csv')
filePath=bucketPath.replace('\\','/')
bucket.upload_file('test.csv',filePath)

Reference
이 문제에 관하여(S3과 동등한 기능을 가진 MinIO 사용 방법 docker-compose 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dmikita/items/f0587069cd25fa8df75e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)