From b9883c5ad91ed1e76edac7439511b30f38f0479e Mon Sep 17 00:00:00 2001 From: Jacopo Gasparetto <jacopo.gasparetto@cnaf.infn.it> Date: Tue, 4 Apr 2023 12:40:06 +0200 Subject: [PATCH] Add minio service --- README.md | 1 + docker-compose.yaml | 14 ++++++++++++ nginx/default.conf | 56 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) diff --git a/README.md b/README.md index e8b0b95..078afdf 100644 --- a/README.md +++ b/README.md @@ -19,3 +19,4 @@ The following endpoint are available - Webapp [localhost:8080](localhost:8080) - API [localhost:8080/api/v1/](localhost:8080/api/v1/) +- Minio [localhost:9000](localhost:9000) diff --git a/docker-compose.yaml b/docker-compose.yaml index f4fc2a7..e036432 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -21,6 +21,17 @@ services: - ./backend/src/:/app/ environment: - WATCHFILES_FORCE_POLLING=true # Enable uvicorn auto-reload + + minio: + container_name: minio + image: minio/minio + command: + - server + - /data + - --console-address + - ":9001" + volumes: + - minio_storage:/data nginx: image: nginx:latest container_name: nginx @@ -28,6 +39,9 @@ services: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf ports: - 8080:80 + - 9000:9000 + - 9001:9001 volumes: node_modules: + minio_storage: diff --git a/nginx/default.conf b/nginx/default.conf index e3503a4..95fa037 100644 --- a/nginx/default.conf +++ b/nginx/default.conf @@ -16,6 +16,10 @@ server { proxy_pass http://backend; } + location /minio { + proxy_pass http://minio; + } + # https://stackoverflow.com/questions/70585472/websocketclient-js16-websocket-connection-to-ws-localhost3000-ws-failed-r location /ws { proxy_pass http://frontend; @@ -24,3 +28,55 @@ server { proxy_set_header Connection "upgrade"; } } + +# https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html +server { + listen 9000; + # Allow special characters in headers + ignore_invalid_headers off; + # Allow any size file to be uploaded. + # Set to a value such as 1000m; to restrict file size to a specific value + client_max_body_size 0; + # Disable buffering + proxy_buffering off; + proxy_request_buffering off; + + location / { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + proxy_connect_timeout 300; + # Default is HTTP/1, keepalive is only enabled in HTTP/1.1 + proxy_http_version 1.1; + proxy_set_header Connection ""; + chunked_transfer_encoding off; + + proxy_pass http://minio:9000/; # This uses the upstream directive definition to load balance + } +} +server { + listen 9001; + location / { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-NginX-Proxy true; + + # This is necessary to pass the correct IP to be hashed + real_ip_header X-Real-IP; + + proxy_connect_timeout 300; + + # To support websockets in MinIO versions released after January 2023 + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + chunked_transfer_encoding off; + + proxy_pass http://minio:9001/; # This uses the upstream directive definition to load balance and assumes a static Console port of 9001 + } +} \ No newline at end of file -- GitLab