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.)