2021.10.13-debian-10-r1 release

This commit is contained in:
Bitnami Bot
2021-10-19 12:18:23 +00:00
parent 9fa0ded18e
commit 22d112fce6
17 changed files with 340 additions and 161 deletions

View File

@@ -15,9 +15,10 @@ RUN . /opt/bitnami/scripts/libcomponent.sh && component_unpack "gosu" "1.14.0-0"
RUN chmod g+rwX /opt/bitnami
COPY rootfs /
RUN /opt/bitnami/scripts/minio-client/postunpack.sh
RUN /opt/bitnami/scripts/minio/postunpack.sh
ENV BITNAMI_APP_NAME="minio" \
BITNAMI_IMAGE_VERSION="2021.10.13-debian-10-r0" \
BITNAMI_IMAGE_VERSION="2021.10.13-debian-10-r1" \
PATH="/opt/bitnami/minio-client/bin:/opt/bitnami/minio/bin:/opt/bitnami/common/bin:$PATH"
VOLUME [ "/certs", "/data" ]

View File

@@ -140,3 +140,24 @@ parse_uri() {
esac
[[ "$uri" =~ $URI_REGEX ]] && echo "${BASH_REMATCH[${index}]}"
}
########################
# Wait for a HTTP connection to succeed
# Globals:
# *
# Arguments:
# $1 - URL to wait for
# $2 - Maximum amount of retries (optional)
# $3 - Time between retries (optional)
# Returns:
# true if the HTTP connection succeeded, false otherwise
#########################
wait_for_http_connection() {
local url="${1:?missing url}"
local retries="${2:-}"
local sleep_time="${3:-}"
if ! retry_while "debug_execute curl --silent ${url}" "$retries" "$sleep_time"; then
error "Could not connect to ${url}"
return 1
fi
}

View File

@@ -13,53 +13,6 @@
# Functions
########################
# Load global variables used on MinIO configuration
# Globals:
# MINIO_*
# Arguments:
# None
# Returns:
# Series of exports to be used as 'eval' arguments
#########################
minio_env() {
cat <<"EOF"
export MINIO_BASEDIR="/opt/bitnami/minio"
export MINIO_LOGDIR="${MINIO_BASEDIR}/log"
export MINIO_SECRETSDIR="${MINIO_BASEDIR}/secrets"
export MINIO_DATADIR="/data"
export MINIO_CERTSDIR="${MINIO_CERTSDIR:-/certs}"
export MINIO_SCHEME="${MINIO_SCHEME:-http}"
export MINIO_SKIP_CLIENT="${MINIO_SKIP_CLIENT:-no}"
export MINIO_DISTRIBUTED_MODE_ENABLED="${MINIO_DISTRIBUTED_MODE_ENABLED:-no}"
export MINIO_DEFAULT_BUCKETS="${MINIO_DEFAULT_BUCKETS:-}"
export MINIO_API_PORT_NUMBER="${MINIO_API_PORT_NUMBER:-9000}"
export MINIO_CONSOLE_PORT_NUMBER="${MINIO_CONSOLE_PORT_NUMBER:-9001}"
export MINIO_DAEMON_USER="minio"
export MINIO_DAEMON_GROUP="minio"
export PATH="${MINIO_BASEDIR}/bin:$PATH"
export MINIO_FORCE_NEW_KEYS="${MINIO_FORCE_NEW_KEYS:-no}"
EOF
if [[ -n "${MINIO_ACCESS_KEY_FILE:-}" ]]; then
cat <<"EOF"
export MINIO_ACCESS_KEY="$(< "${MINIO_ACCESS_KEY_FILE}")"
EOF
else
cat <<"EOF"
export MINIO_ACCESS_KEY="${MINIO_ACCESS_KEY:-minio}"
EOF
fi
if [[ -n "${MINIO_SECRET_KEY_FILE:-}" ]]; then
cat <<"EOF"
export MINIO_SECRET_KEY="$(< "${MINIO_SECRET_KEY_FILE}")"
EOF
else
cat <<"EOF"
export MINIO_SECRET_KEY="${MINIO_SECRET_KEY:-miniosecret}"
EOF
fi
}
########################
# Checks if MINIO_DISTRIBUTED_NODES uses the ellipses syntax {1...n}
# Globals:
@@ -134,7 +87,7 @@ is_minio_running() {
#########################
minio_start_bg() {
local -r exec=$(command -v minio)
local -a args=("server" "--certs-dir" "${MINIO_CERTSDIR}" "--console-address" ":${MINIO_CONSOLE_PORT_NUMBER}")
local -a args=("server" "--certs-dir" "${MINIO_CERTS_DIR}" "--console-address" ":${MINIO_CONSOLE_PORT_NUMBER}")
local -a nodes
if is_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED"; then
@@ -143,11 +96,11 @@ minio_start_bg() {
if is_distributed_ellipses_syntax; then
args+=("${MINIO_SCHEME}://${node}")
else
args+=("${MINIO_SCHEME}://${node}:${MINIO_API_PORT_NUMBER}/${MINIO_DATADIR}")
args+=("${MINIO_SCHEME}://${node}:${MINIO_API_PORT_NUMBER}/${MINIO_DATA_DIR}")
fi
done
else
args+=("${MINIO_DATADIR}")
args+=("${MINIO_DATA_DIR}")
fi
is_minio_running && return
@@ -218,8 +171,8 @@ minio_validate() {
}
if is_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED"; then
if [[ -z "${MINIO_ACCESS_KEY:-}" ]] || [[ -z "${MINIO_ACCESS_KEY:-}" ]]; then
print_validation_error "Distributed mode is enabled. Both MINIO_ACCESS_KEY and MINIO_ACCESS_KEY environment must be set"
if [[ -z "${MINIO_ROOT_USER:-}" ]] || [[ -z "${MINIO_ROOT_PASSWORD:-}" ]]; then
print_validation_error "Distributed mode is enabled. Both MINIO_ROOT_USER and MINIO_ROOT_PASSWORD environment must be set"
fi
if [[ -z "${MINIO_DISTRIBUTED_NODES:-}" ]]; then
print_validation_error "Distributed mode is enabled. Nodes must be indicated setting the environment variable MINIO_DISTRIBUTED_NODES"
@@ -301,12 +254,12 @@ minio_create_default_buckets() {
#########################
minio_regenerate_keys() {
local error_code=0
if is_boolean_yes "$MINIO_FORCE_NEW_KEYS" && [[ -f "${MINIO_DATADIR}/.access_key" ]] && [[ -f "${MINIO_DATADIR}/.secret_key" ]]; then
MINIO_ACCESS_KEY_OLD="$(cat "${MINIO_DATADIR}/.access_key")"
MINIO_SECRET_KEY_OLD="$(cat "${MINIO_DATADIR}/.secret_key")"
if [[ "$MINIO_ACCESS_KEY_OLD" != "$MINIO_ACCESS_KEY" ]] || [[ "$MINIO_SECRET_KEY_OLD" != "$MINIO_SECRET_KEY" ]]; then
if is_boolean_yes "$MINIO_FORCE_NEW_KEYS" && [[ -f "${MINIO_DATA_DIR}/.root_user" ]] && [[ -f "${MINIO_DATADIR}/.root_password" ]]; then
MINIO_ROOT_USER_OLD="$(cat "${MINIO_DATA_DIR}/.root_user")"
MINIO_ROOT_PASSWORD_OLD="$(cat "${MINIO_DATA_DIR}/.root_password")"
if [[ "$MINIO_ROOT_USER_OLD" != "$MINIO_ROOT_USER" ]] || [[ "$MINIO_ROOT_PASSWORD_OLD" != "$MINIO_ROOT_PASSWORD" ]]; then
info "Reconfiguring MinIO credentials..."
export MINIO_ACCESS_KEY_OLD MINIO_SECRET_KEY_OLD
export MINIO_ROOT_USER_OLD MINIO_ROOT_PASSWORD_OLD
# Restart MinIO to reconfigure credentials
# ref: https://docs.min.io/docs/minio-server-configuration-guide.html
minio_start_bg
@@ -314,9 +267,9 @@ minio_regenerate_keys() {
error_code=1
fi
fi
echo "$MINIO_ACCESS_KEY" > "${MINIO_DATADIR}/.access_key"
echo "$MINIO_SECRET_KEY" > "${MINIO_DATADIR}/.secret_key"
chmod 600 "${MINIO_DATADIR}/.secret_key" "${MINIO_DATADIR}/.access_key"
echo "$MINIO_ROOT_USER" > "${MINIO_DATA_DIR}/.root_user"
echo "$MINIO_ROOT_PASSWORD" > "${MINIO_DATA_DIR}/.root_password"
chmod 600 "${MINIO_DATA_DIR}/.root_user" "${MINIO_DATA_DIR}/.root_password"
[[ "$error_code" -eq 0 ]] || exit "$error_code"
}

View File

@@ -4,32 +4,10 @@
# Functions
########################
# Load global variables used on MinIO Client configuration
# Globals:
# MINIO_CLIENT_*
# Arguments:
# None
# Returns:
# Series of exports to be used as 'eval' arguments
#########################
minio_client_env() {
cat <<"EOF"
export MINIO_CLIENT_BASEDIR="/opt/bitnami/minio-client"
export MINIO_CLIENT_CONFIGDIR="/.mc"
export MINIO_SERVER_HOST="${MINIO_SERVER_HOST:-}"
export MINIO_SERVER_PORT_NUMBER="${MINIO_SERVER_PORT_NUMBER:-9000}"
export MINIO_SERVER_SCHEME="${MINIO_SERVER_SCHEME:-http}"
export MINIO_SERVER_ACCESS_KEY="${MINIO_SERVER_ACCESS_KEY:-}"
export MINIO_SERVER_SECRET_KEY="${MINIO_SERVER_SECRET_KEY:-}"
export PATH="${MINIO_CLIENT_BASEDIR}/bin:$PATH"
EOF
}
########################
# Check if a bucket already exists
# Globals:
# MINIO_CLIENT_CONFIGDIR
# MINIO_CLIENT_CONF_DIR
# Arguments:
# $1 - Bucket name
# Returns:
@@ -46,13 +24,13 @@ minio_client_bucket_exists() {
########################
# Execute an arbitrary MinIO client command
# Globals:
# MINIO_CLIENT_CONFIGDIR
# MINIO_CLIENT_CONF_DIR
# Arguments:
# $@ - Command to execute
# Returns:
# None
minio_client_execute() {
local -r args=("--config-dir" "${MINIO_CLIENT_CONFIGDIR}" "--quiet" "$@")
local -r args=("--config-dir" "${MINIO_CLIENT_CONF_DIR}" "--quiet" "$@")
local exec
exec=$(command -v mc)
@@ -62,13 +40,13 @@ minio_client_execute() {
########################
# Execute an arbitrary MinIO client command with a 2s timeout
# Globals:
# MINIO_CLIENT_CONFIGDIR
# MINIO_CLIENT_CONF_DIR
# Arguments:
# $@ - Command to execute
# Returns:
# None
minio_client_execute_timeout() {
local -r args=("--config-dir" "${MINIO_CLIENT_CONFIGDIR}" "--quiet" "$@")
local -r args=("--config-dir" "${MINIO_CLIENT_CONF_DIR}" "--quiet" "$@")
local exec
exec=$(command -v mc)
@@ -85,9 +63,9 @@ minio_client_execute_timeout() {
# Series of exports to be used as 'eval' arguments
#########################
minio_client_configure_server() {
if [[ -n "$MINIO_SERVER_HOST" ]] && [[ -n "$MINIO_SERVER_ACCESS_KEY" ]] && [[ -n "$MINIO_SERVER_SECRET_KEY" ]]; then
if [[ -n "$MINIO_SERVER_HOST" ]] && [[ -n "$MINIO_SERVER_ROOT_USER" ]] && [[ -n "$MINIO_SERVER_ROOT_PASSWORD" ]]; then
info "Adding Minio host to 'mc' configuration..."
minio_client_execute config host add minio "${MINIO_SERVER_SCHEME}://${MINIO_SERVER_HOST}:${MINIO_SERVER_PORT_NUMBER}" "${MINIO_SERVER_ACCESS_KEY}" "${MINIO_SERVER_SECRET_KEY}"
minio_client_execute config host add minio "${MINIO_SERVER_SCHEME}://${MINIO_SERVER_HOST}:${MINIO_SERVER_PORT_NUMBER}" "${MINIO_SERVER_ROOT_USER}" "${MINIO_SERVER_ROOT_PASSWORD}"
fi
}
@@ -100,5 +78,5 @@ minio_client_configure_server() {
#########################
minio_client_configure_local() {
info "Adding local Minio host to 'mc' configuration..."
minio_client_execute config host add local "${MINIO_SERVER_SCHEME}://localhost:${MINIO_SERVER_PORT_NUMBER}" "${MINIO_SERVER_ACCESS_KEY}" "${MINIO_SERVER_SECRET_KEY}" >/dev/null 2>&1
minio_client_execute config host add local "${MINIO_SERVER_SCHEME}://localhost:${MINIO_SERVER_PORT_NUMBER}" "${MINIO_SERVER_ROOT_USER}" "${MINIO_SERVER_ROOT_PASSWORD}" >/dev/null 2>&1
}

View File

@@ -0,0 +1,62 @@
#!/bin/bash
#
# Environment configuration for minio-client
# The values for all environment variables will be set in the below order of precedence
# 1. Custom environment variables defined below after Bitnami defaults
# 2. Constants defined in this file (environment variables with no default), i.e. BITNAMI_ROOT_DIR
# 3. Environment variables overridden via external files using *_FILE variables (see below)
# 4. Environment variables set externally (i.e. current Bash context/Dockerfile/userdata)
# Load logging library
. /opt/bitnami/scripts/liblog.sh
export BITNAMI_ROOT_DIR="/opt/bitnami"
export BITNAMI_VOLUME_DIR="/bitnami"
# Logging configuration
export MODULE="${MODULE:-minio-client}"
export BITNAMI_DEBUG="${BITNAMI_DEBUG:-false}"
# By setting an environment variable matching *_FILE to a file path, the prefixed environment
# variable will be overridden with the value specified in that file
minio_client_env_vars=(
MINIO_SERVER_HOST
MINIO_SERVER_PORT_NUMBER
MINIO_SERVER_SCHEME
MINIO_SERVER_ROOT_USER
MINIO_SERVER_ROOT_PASSWORD
MINIO_CLIENT_ACCESS_KEY
MINIO_CLIENT_SECRET_KEY
)
for env_var in "${minio_client_env_vars[@]}"; do
file_env_var="${env_var}_FILE"
if [[ -n "${!file_env_var:-}" ]]; then
if [[ -r "${!file_env_var:-}" ]]; then
export "${env_var}=$(< "${!file_env_var}")"
unset "${file_env_var}"
else
warn "Skipping export of '${env_var}'. '${!file_env_var:-}' is not readable."
fi
fi
done
unset minio_client_env_vars
# Paths
export MINIO_CLIENT_BASE_DIR="${BITNAMI_ROOT_DIR}/minio-client"
export MINIO_CLIENT_BIN_DIR="${MINIO_CLIENT_BASE_DIR}/bin"
export MINIO_CLIENT_CONF_DIR="/.mc"
export PATH="${MINIO_CLIENT_BIN_DIR}:${PATH}"
# MinIO Client configuration
export MINIO_SERVER_HOST="${MINIO_SERVER_HOST:-}"
export MINIO_SERVER_PORT_NUMBER="${MINIO_SERVER_PORT_NUMBER:-9000}"
export MINIO_SERVER_SCHEME="${MINIO_SERVER_SCHEME:-http}"
# MinIO Client security
MINIO_SERVER_ROOT_USER="${MINIO_SERVER_ROOT_USER:-"${MINIO_CLIENT_ACCESS_KEY:-}"}"
export MINIO_SERVER_ROOT_USER="${MINIO_SERVER_ROOT_USER:-}"
MINIO_SERVER_ROOT_PASSWORD="${MINIO_SERVER_ROOT_PASSWORD:-"${MINIO_CLIENT_SECRET_KEY:-}"}"
export MINIO_SERVER_ROOT_PASSWORD="${MINIO_SERVER_ROOT_PASSWORD:-}"
# Custom environment variables may be defined below

View File

@@ -0,0 +1,21 @@
#!/bin/bash
# shellcheck disable=SC1091
set -o errexit
set -o nounset
set -o pipefail
#set -o xtrace
# Load libraries
. /opt/bitnami/scripts/libbitnami.sh
. /opt/bitnami/scripts/liblog.sh
print_welcome_page
info "** Starting MinIO Client setup **"
/opt/bitnami/scripts/minio-client/setup.sh
info "** MinIO Client setup finished! **"
echo ""
exec "/opt/bitnami/scripts/minio-client/run.sh" "$@"

View File

@@ -0,0 +1,15 @@
#!/bin/bash
# shellcheck disable=SC1091
# Load libraries
. /opt/bitnami/scripts/libfs.sh
. /opt/bitnami/scripts/libminioclient.sh
# Load MinIO Client environment
. /opt/bitnami/scripts/minio-client-env.sh
for dir in "$MINIO_CLIENT_BASE_DIR" "$MINIO_CLIENT_CONF_DIR"; do
ensure_dir_exists "$dir"
done
chmod -R g+rwX "$MINIO_CLIENT_BASE_DIR" "$MINIO_CLIENT_CONF_DIR"

View File

@@ -0,0 +1,26 @@
#!/bin/bash
# shellcheck disable=SC1091
set -o errexit
set -o nounset
set -o pipefail
#set -o xtrace
# Load libraries
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libos.sh
. /opt/bitnami/scripts/libminioclient.sh
# Load MinIO Client environment
. /opt/bitnami/scripts/minio-client-env.sh
# Constants
EXEC=$(command -v mc)
ARGS=("--config-dir" "${MINIO_CLIENT_CONF_DIR}" "$@")
if am_i_root; then
exec gosu "${MINIO_CLIENT_DAEMON_USER}" "${EXEC}" "${ARGS[@]}"
else
exec "${EXEC}" "${ARGS[@]}"
fi

View File

@@ -0,0 +1,19 @@
#!/bin/bash
# shellcheck disable=SC1091
set -o errexit
set -o nounset
set -o pipefail
#set -o xtrace
# Load libraries
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libnet.sh
. /opt/bitnami/scripts/libminioclient.sh
# Load MinIO Client environment
. /opt/bitnami/scripts/minio-client-env.sh
# Configure MinIO Client to use a MinIO server
minio_client_configure_server

View File

@@ -0,0 +1,77 @@
#!/bin/bash
#
# Environment configuration for minio
# The values for all environment variables will be set in the below order of precedence
# 1. Custom environment variables defined below after Bitnami defaults
# 2. Constants defined in this file (environment variables with no default), i.e. BITNAMI_ROOT_DIR
# 3. Environment variables overridden via external files using *_FILE variables (see below)
# 4. Environment variables set externally (i.e. current Bash context/Dockerfile/userdata)
# Load logging library
. /opt/bitnami/scripts/liblog.sh
export BITNAMI_ROOT_DIR="/opt/bitnami"
export BITNAMI_VOLUME_DIR="/bitnami"
# Logging configuration
export MODULE="${MODULE:-minio}"
export BITNAMI_DEBUG="${BITNAMI_DEBUG:-false}"
# By setting an environment variable matching *_FILE to a file path, the prefixed environment
# variable will be overridden with the value specified in that file
minio_env_vars=(
MINIO_API_PORT_NUMBER
MINIO_CONSOLE_PORT_NUMBER
MINIO_SCHEME
MINIO_SKIP_CLIENT
MINIO_DISTRIBUTED_MODE_ENABLED
MINIO_DEFAULT_BUCKETS
MINIO_FORCE_NEW_KEYS
MINIO_ROOT_USER
MINIO_ROOT_PASSWORD
MINIO_ACCESS_KEY
MINIO_SECRET_KEY
)
for env_var in "${minio_env_vars[@]}"; do
file_env_var="${env_var}_FILE"
if [[ -n "${!file_env_var:-}" ]]; then
if [[ -r "${!file_env_var:-}" ]]; then
export "${env_var}=$(< "${!file_env_var}")"
unset "${file_env_var}"
else
warn "Skipping export of '${env_var}'. '${!file_env_var:-}' is not readable."
fi
fi
done
unset minio_env_vars
# Paths
export MINIO_BASE_DIR="${BITNAMI_ROOT_DIR}/minio"
export MINIO_BIN_DIR="${MINIO_BASE_DIR}/bin"
export MINIO_CERTS_DIR="/certs"
export MINIO_LOGS_DIR="${MINIO_BASE_DIR}/log"
export MINIO_SECRETS_DIR="${MINIO_BASE_DIR}/secrets"
export MINIO_DATA_DIR="/data"
export PATH="${MINIO_BIN_DIR}:${PATH}"
# System users (when running with a privileged user)
export MINIO_DAEMON_USER="minio"
export MINIO_DAEMON_GROUP="minio"
# MinIO configuration
export MINIO_API_PORT_NUMBER="${MINIO_API_PORT_NUMBER:-9000}"
export MINIO_CONSOLE_PORT_NUMBER="${MINIO_CONSOLE_PORT_NUMBER:-9001}"
export MINIO_SCHEME="${MINIO_SCHEME:-http}"
export MINIO_SKIP_CLIENT="${MINIO_SKIP_CLIENT:-no}"
export MINIO_DISTRIBUTED_MODE_ENABLED="${MINIO_DISTRIBUTED_MODE_ENABLED:-no}"
export MINIO_DEFAULT_BUCKETS="${MINIO_DEFAULT_BUCKETS:-}"
# MinIO security
export MINIO_FORCE_NEW_KEYS="${MINIO_FORCE_NEW_KEYS:-no}"
MINIO_ROOT_USER="${MINIO_ROOT_USER:-"${MINIO_ACCESS_KEY:-}"}"
export MINIO_ROOT_USER="${MINIO_ROOT_USER:-minio}"
MINIO_ROOT_PASSWORD="${MINIO_ROOT_PASSWORD:-"${MINIO_SECRET_KEY:-}"}"
export MINIO_ROOT_PASSWORD="${MINIO_ROOT_PASSWORD:-miniosecret}"
# Custom environment variables may be defined below

View File

@@ -9,6 +9,7 @@ set -o pipefail
# Load libraries
. /opt/bitnami/scripts/libbitnami.sh
. /opt/bitnami/scripts/liblog.sh
print_welcome_page

View File

@@ -6,21 +6,14 @@
. /opt/bitnami/scripts/libfs.sh
. /opt/bitnami/scripts/libminio.sh
# Load MinIO environment variables
eval "$(minio_env)"
# Load MinIO environment
. /opt/bitnami/scripts/minio-env.sh
# Ensure non-root user has write permissions on a set of directories
for dir in "$MINIO_DATADIR" "$MINIO_CERTSDIR" "$MINIO_LOGDIR" "$MINIO_SECRETSDIR"; do
for dir in "$MINIO_DATA_DIR" "$MINIO_CERTS_DIR" "$MINIO_LOGS_DIR" "$MINIO_SECRETS_DIR"; do
ensure_dir_exists "$dir"
done
chmod -R g+rwX "$MINIO_DATA_DIR" "$MINIO_CERTS_DIR" "$MINIO_LOGS_DIR" "$MINIO_SECRETS_DIR"
# Redirect all logging to stdout/stderr
ln -sf /dev/stdout "$MINIO_LOGDIR/minio-http.log"
chmod -R g+rwX "$MINIO_DATADIR" "$MINIO_CERTSDIR" "$MINIO_LOGDIR" "$MINIO_SECRETSDIR"
# Load MinIO Client environment variables
eval "$(minio_client_env)"
for dir in "$MINIO_CLIENT_BASEDIR" "$MINIO_CLIENT_CONFIGDIR"; do
ensure_dir_exists "$dir"
done
chmod -R g+rwX "$MINIO_CLIENT_BASEDIR" "$MINIO_CLIENT_CONFIGDIR"
ln -sf /dev/stdout "$MINIO_LOGS_DIR/minio-http.log"

View File

@@ -12,12 +12,12 @@ set -o pipefail
. /opt/bitnami/scripts/libos.sh
. /opt/bitnami/scripts/libminio.sh
# Load MinIO environment variables
eval "$(minio_env)"
# Load MinIO environment
. /opt/bitnami/scripts/minio-env.sh
# Constants
EXEC=$(command -v minio)
ARGS=("server" "--certs-dir" "${MINIO_CERTSDIR}" "--console-address" ":${MINIO_CONSOLE_PORT_NUMBER}")
ARGS=("server" "--certs-dir" "${MINIO_CERTS_DIR}" "--console-address" ":${MINIO_CONSOLE_PORT_NUMBER}")
# Add any extra flags passed to this script
ARGS+=("$@")
if is_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED"; then
@@ -26,11 +26,11 @@ if is_boolean_yes "$MINIO_DISTRIBUTED_MODE_ENABLED"; then
if is_distributed_ellipses_syntax; then
ARGS+=("${MINIO_SCHEME}://${node}")
else
ARGS+=("${MINIO_SCHEME}://${node}:${MINIO_API_PORT_NUMBER}/${MINIO_DATADIR}")
ARGS+=("${MINIO_SCHEME}://${node}:${MINIO_API_PORT_NUMBER}/${MINIO_DATA_DIR}")
fi
done
else
ARGS+=("${MINIO_DATADIR}")
ARGS+=("${MINIO_DATA_DIR}")
fi
info "** Starting MinIO **"

View File

@@ -11,25 +11,29 @@ set -o pipefail
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libminio.sh
# Load MinIO environment variables
eval "$(minio_env)"
# Load MinIO environment
. /opt/bitnami/scripts/minio-env.sh
export MINIO_SERVER_PORT_NUMBER="$MINIO_API_PORT_NUMBER"
export MINIO_SERVER_SCHEME="$MINIO_SCHEME"
export MINIO_SERVER_ACCESS_KEY="${MINIO_ACCESS_KEY:-}"
export MINIO_SERVER_SECRET_KEY="${MINIO_SECRET_KEY:-}"
# Load MinIO Client environment variables
eval "$(minio_client_env)"
export MINIO_SERVER_ROOT_USER="${MINIO_ROOT_USER:-}"
export MINIO_SERVER_ROOT_PASSWORD="${MINIO_ROOT_PASSWORD:-}"
# Load MinIO Client environment
. /opt/bitnami/scripts/minio-client-env.sh
# Validate settings in MINIO_* env vars.
minio_validate
# Keys regeneration
minio_regenerate_keys
if is_boolean_yes "$MINIO_SKIP_CLIENT"; then
debug "Skipping MinIO client configuration..."
else
if [ "$MINIO_SERVER_SCHEME" == "https" ]; then
[ ! -d "${MINIO_CLIENT_CONFIGDIR}/certs/CAs" ] && mkdir -p "${MINIO_CLIENT_CONFIGDIR}/certs/CAs"
cp "${MINIO_CERTSDIR}/CAs/public.crt" "${MINIO_CLIENT_CONFIGDIR}/certs/CAs/"
if [[ "$MINIO_SERVER_SCHEME" = "https" ]]; then
[[ ! -d "${MINIO_CLIENT_CONFIG_DIR}/certs/CAs" ]] && mkdir -p "${MINIO_CLIENT_CONFIG_DIR}/certs/CAs"
cp "${MINIO_CERTS_DIR}/CAs/public.crt" "${MINIO_CLIENT_CONFIG_DIR}/certs/CAs/"
fi
# Start MinIO server in background
minio_start_bg
@@ -40,12 +44,12 @@ else
read -r -a drives <<< "$(minio_distributed_drives)"
minio_client_configure_local "/${drives[0]}/.minio.sys/config/config.json"
else
minio_client_configure_local "${MINIO_DATADIR}/.minio.sys/config/config.json"
minio_client_configure_local "${MINIO_DATA_DIR}/.minio.sys/config/config.json"
fi
# Wait for other clients (distribute mode)
sleep 5
else
minio_client_configure_local "${MINIO_DATADIR}/.minio.sys/config/config.json"
minio_client_configure_local "${MINIO_DATA_DIR}/.minio.sys/config/config.json"
fi
# Create default buckets
minio_create_default_buckets

View File

@@ -1,4 +1,6 @@
# What is Bitnami Object Storage based on MinIO(R)?
# Bitnami Docker Image for MinIO(R)
## What is Bitnami Object Storage based on MinIO(R)?
> This software listing is packaged and published by Bitnami. MinIO(R) is an object storage server, compatible with Amazon S3 cloud storage service, mainly used for storing unstructured data (such as photos, videos, log files, etc.).
@@ -45,7 +47,7 @@ Non-root container images add an extra layer of security and are generally recom
Learn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags [in our documentation page](https://docs.bitnami.com/tutorials/understand-rolling-tags-containers/).
* [`2021`, `2021-debian-10`, `2021.10.13`, `2021.10.13-debian-10-r0`, `latest` (2021/debian-10/Dockerfile)](https://github.com/bitnami/bitnami-docker-minio/blob/2021.10.13-debian-10-r0/2021/debian-10/Dockerfile)
* [`2021`, `2021-debian-10`, `2021.10.13`, `2021.10.13-debian-10-r1`, `latest` (2021/debian-10/Dockerfile)](https://github.com/bitnami/bitnami-docker-minio/blob/2021.10.13-debian-10-r1/2021/debian-10/Dockerfile)
Subscribe to project updates by watching the [bitnami/minio GitHub repo](https://github.com/bitnami/bitnami-docker-minio).
@@ -118,8 +120,8 @@ Use the `--network app-tier` argument to the `docker run` command to attach the
```console
$ docker run -d --name minio-server \
--env MINIO_ACCESS_KEY="minio-access-key" \
--env MINIO_SECRET_KEY="minio-secret-key" \
--env MINIO_ROOT_USER="minio-root-user" \
--env MINIO_ROOT_PASSWORD="minio-root-password" \
--network app-tier \
bitnami/minio:latest
```
@@ -131,8 +133,8 @@ Finally we create a new container instance to launch the MinIO(R) client and con
```console
$ docker run -it --rm --name minio-client \
--env MINIO_SERVER_HOST="minio" \
--env MINIO_SERVER_ACCESS_KEY="minio-access-key" \
--env MINIO_SERVER_SECRET_KEY="minio-secret-key" \
--env MINIO_SERVER_ROOT_USER="minio-root-user" \
--env MINIO_SERVER_ROOT_PASSWORD="minio-root-password" \
--network app-tier \
bitnami/minio-client \
mb minio/my-bucket
@@ -156,8 +158,8 @@ services:
- '9000:9000'
- '9001:9001'
environment:
- MINIO_ACCESS_KEY=minio-access-key
- MINIO_SECRET_KEY=minio-secret-key
- MINIO_ROOT_USER=minio-root-user
- MINIO_ROOT_PASSWORD=minio-root-password
networks:
- app-tier
myapp:
@@ -165,14 +167,14 @@ services:
networks:
- app-tier
environment:
- MINIO_SERVER_ACCESS_KEY=minio-access-key
- MINIO_SERVER_SECRET_KEY=minio-secret-key
- MINIO_SERVER_ROOT_USER=minio-root-user
- MINIO_SERVER_ROOT_PASSWORD=minio-root-password
```
> **IMPORTANT**:
>
> 1. Please update the **YOUR_APPLICATION_IMAGE_** placeholder in the above snippet with your application image
> 2. In your application container, use the hostname `minio` to connect to the MinIO(R) server. Use the environment variables `MINIO_SERVER_ACCESS_KEY` and `MINIO_SERVER_SECRET_KEY` to configure the credentials to access the MinIO(R) server.
> 2. In your application container, use the hostname `minio` to connect to the MinIO(R) server. Use the environment variables `MINIO_SERVER_ROOT_USER` and `MINIO_SERVER_ROOT_PASSWORD` to configure the credentials to access the MinIO(R) server.
Launch the containers using:
@@ -253,8 +255,8 @@ You can configure MinIO(R) in Distributed Mode to setup a highly-available stora
* `MINIO_DISTRIBUTED_MODE_ENABLED`: Set it to 'yes' to enable Distributed Mode.
* `MINIO_DISTRIBUTED_NODES`: List of MinIO(R) nodes hosts. Available separators are ' ', ',' and ';'.
* `MINIO_ACCESS_KEY`: MinIO(R) server Access Key. Must be common on every node.
* `MINIO_SECRET_KEY`: MinIO(R) server Secret Key. Must be common on every node.
* `MINIO_ROOT_USER`: MinIO(R) server root user name. Must be common on every node.
* `MINIO_ROOT_PASSWORD`: Password for MinIO(R) server root user. Must be common on every node.
You can use the Docker Compose below to create an 4-node distributed MinIO(R) setup:
@@ -265,32 +267,32 @@ services:
minio1:
image: 'bitnami/minio:latest'
environment:
- MINIO_ACCESS_KEY=minio-access-key
- MINIO_SECRET_KEY=minio-secret-key
- MINIO_ROOT_USER=minio-root-user
- MINIO_ROOT_PASSWORD=minio-root-password
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
- MINIO_SKIP_CLIENT=yes
minio2:
image: 'bitnami/minio:latest'
environment:
- MINIO_ACCESS_KEY=minio-access-key
- MINIO_SECRET_KEY=minio-secret-key
- MINIO_ROOT_USER=minio-root-user
- MINIO_ROOT_PASSWORD=minio-root-password
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
- MINIO_SKIP_CLIENT=yes
minio3:
image: 'bitnami/minio:latest'
environment:
- MINIO_ACCESS_KEY=minio-access-key
- MINIO_SECRET_KEY=minio-secret-key
- MINIO_ROOT_USER=minio-root-user
- MINIO_ROOT_PASSWORD=minio-root-password
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
- MINIO_SKIP_CLIENT=yes
minio4:
image: 'bitnami/minio:latest'
environment:
- MINIO_ACCESS_KEY=minio-access-key
- MINIO_SECRET_KEY=minio-secret-key
- MINIO_ROOT_USER=minio-root-user
- MINIO_ROOT_PASSWORD=minio-root-password
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio1,minio2,minio3,minio4
- MINIO_SKIP_CLIENT=yes
@@ -307,8 +309,8 @@ services:
- 'minio_0_data_0:/data-0'
- 'minio_0_data_1:/data-1'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio-{0...1}/data-{0...1}
minio-1:
@@ -317,8 +319,8 @@ services:
- 'minio_1_data_0:/data-0'
- 'minio_1_data_1:/data-1'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio-{0...1}/data-{0...1}
volumes:
@@ -336,17 +338,17 @@ Find more information about the Distributed Mode in the [MinIO(R) documentation]
### Reconfiguring Keys on container restarts
MinIO(R) configures the access & secret key during the 1st initialization based on the `MINIO_ACCESS_KEY` and `MINIO_SECRET_KEY` environment variables, respetively.
MinIO(R) configures the root user & password during the 1st initialization based on the `MINIO_ROOT_USER` and `MINIO_ROOT_PASSWORD` environment variables, respetively.
When using persistence, MinIO(R) will reuse the data configured during the 1st initialization by default, ignoring whatever values are set on these environment variables. You can force MinIO(R) to reconfigure the keys based on the environment variables by setting the `MINIO_FORCE_NEW_KEYS` environment variable to `yes`:
When using persistence, MinIO(R) will reuse the data configured during the 1st initialization by default, ignoring whatever values are set on these environment variables. You can force MinIO(R) to reconfigure the credentials based on the environment variables by setting the `MINIO_FORCE_NEW_KEYS` environment variable to `yes`:
```console
$ docker run --name minio \
--publish 9000:9000 \
--publish 9001:9001 \
--env MINIO_FORCE_NEW_KEYS="yes" \
--env MINIO_ACCESS_KEY="new-minio-access-key" \
--env MINIO_SECRET_KEY="new-minio-secret-key" \
--env MINIO_ROOT_USER="new-minio-root-user" \
--env MINIO_ROOT_PASSWORD="new-minio-root-pass" \
--volume /path/to/minio-persistence:/data \
bitnami/minio:latest
```
@@ -453,6 +455,12 @@ or using Docker Compose:
$ docker-compose up minio
```
## Notable Changes
### 2021.10.6-debian-10-r2
- The `MINIO_ACCESS_KEY` and `MINIO_SECRET_KEY`, environment variables were deprecated in favor of `MINIO_ROOT_USER` and `MINIO_ROOT_PASSWORD`, respectively, so it's aligned with the [current terminology](https://docs.min.io/minio/baremetal/security/minio-identity-management/user-management.html#minio-users-root).
## Contributing
We'd love for you to contribute to this container. You can request new features by creating an [issue](https://github.com/bitnami/bitnami-docker-minio/issues), or submit a [pull request](https://github.com/bitnami/bitnami-docker-minio/pulls) with your contribution.

View File

@@ -19,8 +19,8 @@ services:
- 'minio_0_data_0:/data-0'
- 'minio_0_data_1:/data-1'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio-{0...1}/data-{0...1}
depends_on:
@@ -31,8 +31,8 @@ services:
- 'minio_1_data_0:/data-0'
- 'minio_1_data_1:/data-1'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio-{0...1}/data-{0...1}
depends_on:

View File

@@ -9,8 +9,8 @@ services:
volumes:
- 'minio_data:/data'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio,minio2,minio3,minio4
minio2:
@@ -18,8 +18,8 @@ services:
volumes:
- 'minio_2_data:/data'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio,minio2,minio3,minio4
minio3:
@@ -27,8 +27,8 @@ services:
volumes:
- 'minio_3_data:/data'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio,minio2,minio3,minio4
minio4:
@@ -36,8 +36,8 @@ services:
volumes:
- 'minio_4_data:/data'
environment:
- MINIO_ACCESS_KEY=minio
- MINIO_SECRET_KEY=miniosecret
- MINIO_ROOT_USER=minio
- MINIO_ROOT_PASSWORD=miniosecret
- MINIO_DISTRIBUTED_MODE_ENABLED=yes
- MINIO_DISTRIBUTED_NODES=minio,minio2,minio3,minio4