-
Notifications
You must be signed in to change notification settings - Fork 314
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch from localstack to minIO #2640
base: develop
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -10,10 +10,11 @@ DJANGO_SETTINGS_MODULE=config.settings.deployment | |||||||||||
DJANGO_DEBUG=False | ||||||||||||
|
||||||||||||
BUCKET_REGION=ap-south-1 | ||||||||||||
BUCKET_KEY=key | ||||||||||||
BUCKET_SECRET=secret | ||||||||||||
BUCKET_ENDPOINT=http://localstack:4566 | ||||||||||||
BUCKET_EXTERNAL_ENDPOINT=http://localhost:4566 | ||||||||||||
# WARNING: These are default MinIO credentials. Ensure to change these in production environments | ||||||||||||
BUCKET_KEY=minioadmin | ||||||||||||
BUCKET_SECRET=minioadmin | ||||||||||||
Comment on lines
+14
to
+15
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Default credentials in a prebuilt environment? How... convenient Using default MinIO credentials ( +# WARNING: These are default MinIO credentials. Ensure to change these in production environments
BUCKET_KEY=minioadmin
BUCKET_SECRET=minioadmin 📝 Committable suggestion
Suggested change
|
||||||||||||
BUCKET_ENDPOINT=http://minio:9000 | ||||||||||||
BUCKET_EXTERNAL_ENDPOINT=http://localhost:9100 | ||||||||||||
FILE_UPLOAD_BUCKET=patient-bucket | ||||||||||||
FACILITY_S3_BUCKET=facility-bucket | ||||||||||||
|
||||||||||||
|
This file was deleted.
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,24 @@ | ||||||||||||||||||||||||||
#!/bin/sh | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
# Start MinIO in the background | ||||||||||||||||||||||||||
minio server /data --console-address ":9001" & | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
# Wait for MinIO to be ready before running the initialization script | ||||||||||||||||||||||||||
TIMEOUT=300 # 5 minutes | ||||||||||||||||||||||||||
start_time=$(date +%s) | ||||||||||||||||||||||||||
until curl -s http://localhost:9000/minio/health/ready; do | ||||||||||||||||||||||||||
current_time=$(date +%s) | ||||||||||||||||||||||||||
elapsed=$((current_time - start_time)) | ||||||||||||||||||||||||||
if [ $elapsed -gt $TIMEOUT ]; then | ||||||||||||||||||||||||||
echo "MinIO failed to start after ${TIMEOUT} seconds. But I'm sure you knew that could happen." | ||||||||||||||||||||||||||
exit 1 | ||||||||||||||||||||||||||
fi | ||||||||||||||||||||||||||
echo "Waiting for MinIO to be ready..." | ||||||||||||||||||||||||||
sleep 5 | ||||||||||||||||||||||||||
done | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
# Run the bucket setup script | ||||||||||||||||||||||||||
sh /init-script.sh | ||||||||||||||||||||||||||
Comment on lines
+20
to
+21
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Assuming init-script.sh will always be there, are we? It might be worth checking if the initialization script exists and is executable before blindly running it. # Run the bucket setup script
+if [ ! -f /init-script.sh ]; then
+ echo "Init script not found. I'm sure this is fine."
+ exit 1
+fi
+if [ ! -x /init-script.sh ]; then
+ echo "Init script not executable. How mysterious."
+ exit 1
+fi
sh /init-script.sh 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
# Keep the container running | ||||||||||||||||||||||||||
wait $! |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/bin/sh | ||
|
||
set -e | ||
|
||
# MinIO configuration | ||
MINIO_HOST=${MINIO_HOST:-"http://localhost:9000"} | ||
MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-"minioadmin"} | ||
MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-"minioadmin"} | ||
|
||
# Max retries and delay | ||
MAX_RETRIES=10 | ||
RETRY_COUNT=0 | ||
RETRY_DELAY=5 # 5 seconds delay between retries | ||
|
||
# Function to retry a command | ||
retry_command() { | ||
cmd=$1 | ||
until $cmd; do | ||
RETRY_COUNT=$((RETRY_COUNT + 1)) | ||
if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then | ||
echo "Command failed after $MAX_RETRIES attempts. Exiting..." | ||
exit 1 | ||
fi | ||
echo "Command failed. Retrying ($RETRY_COUNT/$MAX_RETRIES)..." | ||
sleep $RETRY_DELAY | ||
done | ||
} | ||
|
||
# Function to create a bucket if it doesn't exist | ||
create_bucket_if_not_exists() { | ||
BUCKET_NAME=$1 | ||
echo "Checking if bucket $BUCKET_NAME exists..." | ||
if mc ls local/$BUCKET_NAME > /dev/null 2>&1; then | ||
echo "Bucket $BUCKET_NAME already exists. Skipping creation." | ||
else | ||
echo "Creating bucket $BUCKET_NAME..." | ||
mc mb local/$BUCKET_NAME | ||
fi | ||
} | ||
|
||
# Function to set a bucket public | ||
set_bucket_public() { | ||
BUCKET_NAME=$1 | ||
# WARNING: This bucket is intentionally set to public access as MinIO doesn't support ACLs | ||
# Ensure only non-sensitive data is stored in this bucket | ||
echo "Setting bucket $BUCKET_NAME as public..." | ||
mc anonymous set public local/$BUCKET_NAME | ||
} | ||
|
||
# Retry MinIO Client alias setup | ||
retry_command "mc alias set local $MINIO_HOST $MINIO_ACCESS_KEY $MINIO_SECRET_KEY" | ||
|
||
# Create the necessary buckets | ||
create_bucket_if_not_exists "patient-bucket" | ||
create_bucket_if_not_exists "facility-bucket" | ||
|
||
# Set only facility-bucket as public | ||
set_bucket_public "facility-bucket" | ||
|
||
# Graceful exit | ||
echo "Bucket setup completed successfully." | ||
exit 0 |
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -16,7 +16,7 @@ Using Docker Compose | |||||||||||
- care (main repo) | ||||||||||||
- redis (in-memory cache) | ||||||||||||
- celery (task queue) | ||||||||||||
- localstack (to mimic AWS services locally) | ||||||||||||
- minio (to mimic AWS services locally) | ||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion The documentation seems to be missing some... details While you've updated the service list to include MinIO, it would be absolutely wonderful if we could add some MinIO-specific setup instructions, such as:
- minio (to mimic AWS services locally)
+ The MinIO console is available at http://localhost:9001
+ Default credentials: minioadmin/minioadmin
+ Note: The facility bucket is set to public access 📝 Committable suggestion
Suggested change
|
||||||||||||
|
||||||||||||
This is the most recommended way of setting up care locally, | ||||||||||||
as it installs appropriate dependencies in containers so there | ||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
The mysterious case of the missing volume definition
While the volume mounts look correct, you might want to define a named volume for the MinIO data directory in the volumes section. You know, for persistence and all that.
📝 Committable suggestion