前言
- minio单节点容器部署
- s3fs本地挂载minio桶(单个)
- linux环境 ubuntu or debain
- python3.8.10
中间耦合过多。但是,linux开机自启(systemctl外还有别的实现方式)通过python脚本运行linux命令。在以后可能是一个不错的选择。 实现 通过s3fs将minio桶上存储的路径挂载到某个路径下。linux重启在minio启动后自动挂载。
minio
docker-compose
容器部署
version: '3'
services:
minio:
image: 'minio/minio:latest'
container_name: minio
restart: always
command: server /data --console-address ":9001"
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
ports:
- "9001:9001"
- "9000:9000"
s3fs
安装
sudo apt install s3fs
配置
配置minio账号密码
echo AccessKey:SecretKey > xx/passwd-s3fs
chmod 600 xx/.passwd-s3fs
手动挂载
s3fs -o passwd_file=/xx/.passwd-s3fs -o url=http://ip:9000 -o allow_other -o no_check_certificate -o use_path_request_style -o umask=000 minio桶名称 挂载路径
linux服务器重启自动挂载minio桶
ubuntu/debian 适用
方法
systemctl开机自启,运行python脚本。
在路径**/usr/lib/systemd/system** or /etc/systemd/system 配置minio.service文件。
[Unit]
Description=minio
Documentation=empty
[Service]
Type=oneshot
PIDFile=/run/minio.pid
ExecStartPre=
# python脚本
ExecStart=/usr/bin/python3 xx/minio_bucket_monut.py.py
ExecReload=
ExecStop=
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置开启自启动
systemctl enable minio.service
python脚本
- 监测minio容器状态为运行
- 挂载minio桶
- 可以重启部分容器
- 脚本默认循环 600 次 每次等待1s
minio_bucket_monut.py
import subprocess
from time import sleep
def execute(command):
"""执行"""
try:
return subprocess.getoutput(command)
except Exception as e:
print(e)
def run_linux(
minio_container_name,
minio_pw_path,
minio_url,
bucket_name,
mount_path,
containers: [list, tuple] = None,
sleep_num=1,
count=600
):
"""
linux 开机启动 python 脚本 监控 docker容器状态
:param minio_container_name: minio 容器名称
:param minio_pw_path: minio 用户名密码和账号文件路径
:param minio_url: minio服务url
:param bucket_name: 挂载minio桶名称
:param mount_path: 挂载地址
:param containers: 重启容器名称
:param sleep_num: 循环一次睡眠时间
:param count: 循环次数
sleep_num * count = 监听最长时间 s
:return:
"""
# sudo docker inspect --format '{{.Name}} {{.State.Running}} 容器名称' -> '/minio true'
c1 = "sudo docker inspect --format '{{.State.Running}}' %s" % minio_container_name
c2 = f"s3fs -o passwd_file={minio_pw_path} -o url={minio_url} -o allow_other -o no_check_certificate " \
f"-o use_path_request_style -o umask=000 {bucket_name} {mount_path}"
i = 0
while i < count:
res = execute(c1)
if not res:
break
if res == 'true':
# 挂载 s3fs
execute(c2)
# 重启 容器
if containers is not None:
for ite in containers:
execute(
'sudo docker restart %s' % ite
)
break
sleep(sleep_num)
i += 1
if __name__ == '__main__':
conf = {
'minio_container_name': 'minio',
'minio_pw_path': '/xx/.passwd-s3fs',
'minio_url': 'http://ip:9000',
'bucket_name': 'bucket_name',
'mount_path': 'mount_path',
'containers': ['容器名称1', '容器名称2'],
}
run_linux(**conf)
标签:minio,param,name,自动,path,挂载,s3fs
From: https://blog.51cto.com/u_14967494/6033832