From 55b08403cb27d6a31ba025c4e07d4d18ac5835a5 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Sun, 11 Jul 2021 19:31:40 -0700 Subject: [PATCH] update docker docs with --console-address also update the orchestration docs for nginx proxy for console. fixes #12660 --- docs/docker/README.md | 40 ++++++++++++------ .../docker-compose/docker-compose.yaml | 13 ++++-- docs/orchestration/docker-compose/nginx.conf | 41 +++++++++++++++++++ 3 files changed, 78 insertions(+), 16 deletions(-) diff --git a/docs/docker/README.md b/docs/docker/README.md index b455011b4..9d6b3b9e3 100644 --- a/docs/docker/README.md +++ b/docs/docker/README.md @@ -7,32 +7,38 @@ Docker installed on your machine. Download the relevant installer from [here](ht MinIO needs a persistent volume to store configuration and application data. However, for testing purposes, you can launch MinIO by simply passing a directory (`/data` in the example below). This directory gets created in the container filesystem at the time of container start. But all the data is lost after container exits. ```sh -docker run -p 9000:9000 \ +docker run \ + -p 9000:9000 \ + -p 9001:9001 \ -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ - minio/minio server /data + minio/minio server /data --console-address ":9001" ``` To create a MinIO container with persistent storage, you need to map local persistent directories from the host OS to virtual config `~/.minio` and export `/data` directories. To do this, run the below commands #### GNU/Linux and macOS ```sh -docker run -p 9000:9000 \ +docker run \ + -p 9000:9000 \ + -p 9001:9001 \ --name minio1 \ -v /mnt/data:/data \ -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ - minio/minio server /data + minio/minio server /data --console-address ":9001" ``` #### Windows ```sh -docker run -p 9000:9000 \ +docker run \ + -p 9000:9000 \ + -p 9001:9001 \ --name minio1 \ -v D:\data:/data \ -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ - minio/minio server /data + minio/minio server /data --console-address ":9001" ``` ## Run Distributed MinIO on Docker @@ -45,20 +51,26 @@ To override MinIO's auto-generated keys, you may pass secret and access keys exp #### GNU/Linux and macOS ```sh -docker run -p 9000:9000 --name minio1 \ +docker run \ + -p 9000:9000 \ + -p 9001:9001 \ + --name minio1 \ -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ -v /mnt/data:/data \ - minio/minio server /data + minio/minio server /data --console-address ":9001" ``` #### Windows ```powershell -docker run -p 9000:9000 --name minio1 \ +docker run \ + -p 9000:9000 \ + -p 9001:9001 \ + --name minio1 \ -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_ROOT_PASSWORD=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ -v D:\data:/data \ - minio/minio server /data + minio/minio server /data --console-address ":9001" ``` ### Run MinIO Docker as a regular user @@ -70,7 +82,9 @@ On Linux and macOS you can use `--user` to run the container as regular user. > NOTE: make sure --user has write permission to *${HOME}/data* prior to using `--user`. ```sh mkdir -p ${HOME}/data -docker run -p 9000:9000 \ +docker run \ + -p 9000:9000 \ + -p 9001:9001 \ --user $(id -u):$(id -g) \ --name minio1 \ -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ @@ -85,7 +99,9 @@ On windows you would need to use [Docker integrated windows authentication](http > NOTE: make sure your AD/Windows user has write permissions to *D:\data* prior to using `credentialspec=`. ```powershell -docker run -p 9000:9000 \ +docker run \ + -p 9000:9000 \ + -p 9001:9001 \ --name minio1 \ --security-opt "credentialspec=file://myuser.json" -e "MINIO_ROOT_USER=AKIAIOSFODNN7EXAMPLE" \ diff --git a/docs/orchestration/docker-compose/docker-compose.yaml b/docs/orchestration/docker-compose/docker-compose.yaml index 2ed127018..039f4dce6 100644 --- a/docs/orchestration/docker-compose/docker-compose.yaml +++ b/docs/orchestration/docker-compose/docker-compose.yaml @@ -12,10 +12,11 @@ services: - data1-2:/data2 expose: - "9000" + - "9001" environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minio123 - command: server http://minio{1...4}/data{1...2} + command: server --console-address ":9001" http://minio{1...4}/data{1...2} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s @@ -30,10 +31,11 @@ services: - data2-2:/data2 expose: - "9000" + - "9001" environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minio123 - command: server http://minio{1...4}/data{1...2} + command: server --console-address ":9001" http://minio{1...4}/data{1...2} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s @@ -48,10 +50,11 @@ services: - data3-2:/data2 expose: - "9000" + - "9001" environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minio123 - command: server http://minio{1...4}/data{1...2} + command: server --console-address ":9001" http://minio{1...4}/data{1...2} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s @@ -66,10 +69,11 @@ services: - data4-2:/data2 expose: - "9000" + - "9001" environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minio123 - command: server http://minio{1...4}/data{1...2} + command: server --console-address ":9001" http://minio{1...4}/data{1...2} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s @@ -83,6 +87,7 @@ services: - ./nginx.conf:/etc/nginx/nginx.conf:ro ports: - "9000:9000" + - "9001:9001" depends_on: - minio1 - minio2 diff --git a/docs/orchestration/docker-compose/nginx.conf b/docs/orchestration/docker-compose/nginx.conf index 640f63da5..9b6ccdc10 100644 --- a/docs/orchestration/docker-compose/nginx.conf +++ b/docs/orchestration/docker-compose/nginx.conf @@ -29,6 +29,14 @@ http { server minio4:9000; } + upstream console { + ip_hash; + server minio1:9001; + server minio2:9001; + server minio3:9001; + server minio4:9001; + } + server { listen 9000; listen [::]:9000; @@ -57,4 +65,37 @@ http { proxy_pass http://minio; } } + + server { + listen 9001; + listen [::]:9001; + server_name localhost; + + # To 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; + # To disable buffering + proxy_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_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; + # 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://console; + } + } }