настроить minio в докере для использования https
Это моеdocker-compose.yml
:
version: '3.7'
services:
minio:
image: minio/minio
command: server -C /etc/minio --address ":9000" --console-address ":9001" /data
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio:/data
- /etc/minio:/root/.minio/
- /etc/minio:/etc/minio/
volumes:
minio:
ls -l /etc/minio/
:
drwx------ 2 root root 4096 May 20 11:43 CAs
lrwxrwxrwx 1 root root 59 May 20 11:45 private.key -> /etc/letsencrypt/live/mydomain.com/privkey.pem
lrwxrwxrwx 1 root root 61 May 20 11:44 public.crt -> /etc/letsencrypt/live/mydomain.com/fullchain.pem
доступ через http работает, а https нет. Я понятия не имею, что не так. К сожалению, журналы ничего не показывают, и документы тоже не помогают.
3 ответа
Символические ссылкиprivate.key
иpublic.crt
не может быть решено, поскольку цели не существуют внутри контейнера.
Самый простой способ - смонтировать/etc/letsencrypt
внутри контейнера тоже.
Имейте в виду, что вам необходимо перезапустить контейнер (или хотя бы перезагрузить процесс minio внутри контейнера) после каждого обновления сертификата.
docker_compose.yml
networks:
app-tier:
driver: bridge
services:
minio:
image: minio/minio
ports:
- "9000:9000"
- "9001:9001"
networks:
- app-tier
volumes:
- /data/minio:/data
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
command: server --console-address ":9001" /data
nginx:
image: nginx:latest
container_name: 'nginx'
hostname: 'nginx'
ports:
- "8443:8443"
- "8444:8444"
environment:
- "VIRTUAL_HOST=minio.example.com"
- "VIRTUAL_PORT=8443"
networks:
- app-tier
volumes:
- ./conf/app.conf:/etc/nginx/conf.d/default.conf:ro"
- '/etc/letsencrypt/live/:/etc/letsencrypt/live/'
- '/etc/letsencrypt/archive/:/etc/letsencrypt/archive/'
volumes:
minio_storage: {}
app.conf должен быть помещен в папку conf.
upstream minio {
server minio:9001;
keepalive 15;
}
upstream minio_api {
server minio:9000;
keepalive 15;
}
server {
listen 8443 ssl;
server_name minio.example.com;
ssl_certificate /etc/letsencrypt/live/minio.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/minio.example.com/privkey.pem;
resolver 8.8.8.8;
location / {
proxy_pass http://minio;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
chunked_transfer_encoding off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 8444 ssl;
server_name minio.example.com;
ssl_certificate /etc/letsencrypt/live/minio.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/minio.example.com/privkey.pem;
resolver 8.8.8.8;
location / {
proxy_pass http://minio_api;
proxy_redirect off;
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Proxy-Connection "Keep-Alive";
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
chunked_transfer_encoding off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Проверьте разрешения для папки /etc/letsencrypt, поскольку контейнеры запускаются от имени непривилегированного пользователя.
На самом деле, глядя на ошибку, я согласен, что это может быть связано с тем, что он не может прочитать сертификаты, однако я считаю, что это проблема с разрешением, а не с неправильным путем... поэтому я бы сказал, что используйте chown для изменения разрешений каталога и файла.