mirror of
https://github.com/rustfs/rustfs.git
synced 2026-01-17 17:40:38 +00:00
123 lines
3.2 KiB
YAML
123 lines
3.2 KiB
YAML
# Copyright 2024 RustFS Team
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# MNMD (Multi-Node Multi-Drive) Docker Compose Example
|
|
# 4 nodes x 4 drives configuration
|
|
# This example demonstrates a complete, ready-to-use MNMD deployment
|
|
# addressing startup coordination and VolumeNotFound issues.
|
|
|
|
x-node-template: &node-template
|
|
image: rustfs/rustfs:latest
|
|
environment:
|
|
# Use service names and correct disk indexing (1..4 to match mounted paths)
|
|
- RUSTFS_VOLUMES=http://rustfs-node{1...4}:9000/data/rustfs{1...4}
|
|
- RUSTFS_ADDRESS=0.0.0.0:9000
|
|
- RUSTFS_CONSOLE_ENABLE=true
|
|
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
|
|
- RUSTFS_EXTERNAL_ADDRESS=0.0.0.0:9000 # Same as internal since no port mapping
|
|
- RUSTFS_ACCESS_KEY=rustfsadmin
|
|
- RUSTFS_SECRET_KEY=rustfsadmin
|
|
- RUSTFS_CMD=rustfs
|
|
- RUSTFS_OBS_LOG_DIRECTORY=/logs
|
|
command: [ "sh", "-c", "sleep 3 && rustfs" ]
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD",
|
|
"sh", "-c",
|
|
"curl -f http://localhost:9000/health && curl -f http://localhost:9001/rustfs/console/health"
|
|
]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
networks:
|
|
- rustfs-mnmd
|
|
|
|
|
|
services:
|
|
rustfs-node1:
|
|
<<: *node-template
|
|
container_name: rustfs-node1
|
|
hostname: rustfs-node1
|
|
ports:
|
|
- "9000:9000" # API endpoint
|
|
- "9001:9001" # Console
|
|
volumes:
|
|
- node1-data1:/data/rustfs1
|
|
- node1-data2:/data/rustfs2
|
|
- node1-data3:/data/rustfs3
|
|
- node1-data4:/data/rustfs4
|
|
|
|
rustfs-node2:
|
|
<<: *node-template
|
|
container_name: rustfs-node2
|
|
hostname: rustfs-node2
|
|
ports:
|
|
- "9010:9000" # API endpoint
|
|
- "9011:9001" # Console
|
|
volumes:
|
|
- node2-data1:/data/rustfs1
|
|
- node2-data2:/data/rustfs2
|
|
- node2-data3:/data/rustfs3
|
|
- node2-data4:/data/rustfs4
|
|
|
|
rustfs-node3:
|
|
<<: *node-template
|
|
container_name: rustfs-node3
|
|
hostname: rustfs-node3
|
|
ports:
|
|
- "9020:9000" # API endpoint
|
|
- "9021:9001" # Console
|
|
volumes:
|
|
- node3-data1:/data/rustfs1
|
|
- node3-data2:/data/rustfs2
|
|
- node3-data3:/data/rustfs3
|
|
- node3-data4:/data/rustfs4
|
|
|
|
rustfs-node4:
|
|
<<: *node-template
|
|
container_name: rustfs-node4
|
|
hostname: rustfs-node4
|
|
ports:
|
|
- "9030:9000" # API endpoint
|
|
- "9031:9001" # Console
|
|
volumes:
|
|
- node4-data1:/data/rustfs1
|
|
- node4-data2:/data/rustfs2
|
|
- node4-data3:/data/rustfs3
|
|
- node4-data4:/data/rustfs4
|
|
|
|
networks:
|
|
rustfs-mnmd:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
node1-data1:
|
|
node1-data2:
|
|
node1-data3:
|
|
node1-data4:
|
|
node2-data1:
|
|
node2-data2:
|
|
node2-data3:
|
|
node2-data4:
|
|
node3-data1:
|
|
node3-data2:
|
|
node3-data3:
|
|
node3-data4:
|
|
node4-data1:
|
|
node4-data2:
|
|
node4-data3:
|
|
node4-data4:
|