···1010DJANGO_DEBUG=False
11111212BUCKET_REGION=ap-south-1
1313-BUCKET_KEY=key
1414-BUCKET_SECRET=secret
1515-BUCKET_ENDPOINT=http://localstack:4566
1616-BUCKET_EXTERNAL_ENDPOINT=http://localhost:4566
1313+# WARNING: These are default MinIO credentials. Ensure to change these in production environments
1414+BUCKET_KEY=minioadmin
1515+BUCKET_SECRET=minioadmin
1616+BUCKET_ENDPOINT=http://minio:9000
1717+BUCKET_EXTERNAL_ENDPOINT=http://localhost:9100
1718FILE_UPLOAD_BUCKET=patient-bucket
1819FACILITY_S3_BUCKET=facility-bucket
1920
···11+#!/bin/sh
22+33+# Start MinIO in the background
44+minio server /data --console-address ":9001" &
55+66+# Wait for MinIO to be ready before running the initialization script
77+TIMEOUT=300 # 5 minutes
88+start_time=$(date +%s)
99+until curl -s http://localhost:9000/minio/health/ready; do
1010+ current_time=$(date +%s)
1111+ elapsed=$((current_time - start_time))
1212+ if [ $elapsed -gt $TIMEOUT ]; then
1313+ echo "MinIO failed to start after ${TIMEOUT} seconds. But I'm sure you knew that could happen."
1414+ exit 1
1515+ fi
1616+ echo "Waiting for MinIO to be ready..."
1717+ sleep 5
1818+done
1919+2020+# Run the bucket setup script
2121+sh /init-script.sh
2222+2323+# Keep the container running
2424+wait $!
+62
docker/minio/init-script.sh
···11+#!/bin/sh
22+33+set -e
44+55+# MinIO configuration
66+MINIO_HOST=${MINIO_HOST:-"http://localhost:9000"}
77+MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-"minioadmin"}
88+MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-"minioadmin"}
99+1010+# Max retries and delay
1111+MAX_RETRIES=10
1212+RETRY_COUNT=0
1313+RETRY_DELAY=5 # 5 seconds delay between retries
1414+1515+# Function to retry a command
1616+retry_command() {
1717+ cmd=$1
1818+ until $cmd; do
1919+ RETRY_COUNT=$((RETRY_COUNT + 1))
2020+ if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then
2121+ echo "Command failed after $MAX_RETRIES attempts. Exiting..."
2222+ exit 1
2323+ fi
2424+ echo "Command failed. Retrying ($RETRY_COUNT/$MAX_RETRIES)..."
2525+ sleep $RETRY_DELAY
2626+ done
2727+}
2828+2929+# Function to create a bucket if it doesn't exist
3030+create_bucket_if_not_exists() {
3131+ BUCKET_NAME=$1
3232+ echo "Checking if bucket $BUCKET_NAME exists..."
3333+ if mc ls local/$BUCKET_NAME > /dev/null 2>&1; then
3434+ echo "Bucket $BUCKET_NAME already exists. Skipping creation."
3535+ else
3636+ echo "Creating bucket $BUCKET_NAME..."
3737+ mc mb local/$BUCKET_NAME
3838+ fi
3939+}
4040+4141+# Function to set a bucket public
4242+set_bucket_public() {
4343+ BUCKET_NAME=$1
4444+ # WARNING: This bucket is intentionally set to public access as MinIO doesn't support ACLs
4545+ # Ensure only non-sensitive data is stored in this bucket
4646+ echo "Setting bucket $BUCKET_NAME as public..."
4747+ mc anonymous set public local/$BUCKET_NAME
4848+}
4949+5050+# Retry MinIO Client alias setup
5151+retry_command "mc alias set local $MINIO_HOST $MINIO_ACCESS_KEY $MINIO_SECRET_KEY"
5252+5353+# Create the necessary buckets
5454+create_bucket_if_not_exists "patient-bucket"
5555+create_bucket_if_not_exists "facility-bucket"
5656+5757+# Set only facility-bucket as public
5858+set_bucket_public "facility-bucket"
5959+6060+# Graceful exit
6161+echo "Bucket setup completed successfully."
6262+exit 0
+1-1
docs/local-setup/configuration.rst
···1616 - care (main repo)
1717 - redis (in-memory cache)
1818 - celery (task queue)
1919- - localstack (to mimic AWS services locally)
1919+ - minio (to mimic AWS services locally)
20202121This is the most recommended way of setting up care locally,
2222as it installs appropriate dependencies in containers so there