Подключение MinIO в Docker Compose
Важно
- Версия внешнего сервиса должна совпадать с версией, указанной в файле
docker-compose.yml. - В качестве примера в этой инструкции используется проект с именем
testit. Вы можете использовать другое название.
Вы можете использовать одну базу данных для сервисов minio и avatars.minio.
Создайте два бакета. Например,
bucket1на замену сервису minio иbucket2на замену сервису avatars.minio.Для каждого из бакетов создайте пару Access Key и Secret Key.
В
.env-файле:Для сервиса minio установите следующие значения переменных:
AWS_ACCESS_KEY: (Access key, установленный для bucket1) AWS_SECRET_KEY: (Secret Key, установленный для bucket1) AWS_CONNECTION_STRING: http://external-server:9000 (где external-server — ip-адрес или DNS-имя вашего сервера с minio) FILE_BUCKET_NAME: (в данном примере, bucket1)Для сервиса avatars.minio установите следующие значения переменных:
AVATARS_AWS_ACCESS_KEY: (Access key, установленный для bucket2) AVATARS_AWS_SECRET_KEY: (Secret Key, установленный для bucket2) AVATARS_AWS_CONNECTION_STRING: http://external-server:9000Добавьте для сервиса avatars.minio следующую переменную:
AVATARS_FILE_BUCKET_NAME: (в данном примере, bucket2)
В файле
docker-compose.ymlзакомментируйте секцию с сервисомminio, зависимости от него других контейнеров (все упоминания сервиса в блокахdepends_on), и его вольюмы (minio-export-volume и minio-data-volume) в спискеvolumes.Перезапустите систему Test IT:
docker compose -f docker-compose.yml --project-name testit up --detach --timeout 120 --remove-orphans
Настройка безопасного соединения
Подготовьте файлы сертификатов — корневой
ca.crt, а также подписанные с помощью него сертификат и ключ сервераserver.crtиserver.key. CN сертификата сервера должен бытьminio.Скопируйте файлы server.crt и server.key для minio в вольюм:
server_certs=$(docker inspect yourproject_minio-tls-volume --format '{{ .Mountpoint }}') cp server-minio.crt ${server_certs}/public.crt cp server-minio.key ${server_certs}/private.keyПри копировании файлы сертификатов переименовываются в
public.crtиprivate.keyсоответственно, так какminioожидает такие файлы в соответствии с документацией. :::Скопируйте файл сертификата CA, с помощью которого были выписаны сертификаты серверов, в вольюм
trusted-certificates-volume:trusted_certs=$(docker inspect yourproject_trusted-certificates-volume --format '{{ .Mountpoint }}') cp ca.crt ${trusted_certs}/Измените значение переменной для подключения к
minioв файле.envдля использования HTTPS:AWS_CONNECTION_STRING=https://minio:9000Для того, чтобы изменения вступили в силу, перезапустите сервис
minio, а затем примените изменения в файле.envс помощьюdocker compose:docker restart yourproject_minio_1 docker compose -f docker-compose.yml --project-name testit up --detach --timeout 120Сервисы
webapiиavatars.apiтакже будут перезапущены с новой конфигурацией для подключения кminioпо HTTPS.