# 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.

services:
  node0:
    image: rustfs/rustfs:latest # Replace with your image name and label
    container_name: node0
    hostname: node0
    environment:
      - RUSTFS_VOLUMES=http://node{0...3}:9000/data/rustfs{0...3}
      - RUSTFS_ADDRESS=0.0.0.0:9000
      - RUSTFS_CONSOLE_ENABLE=true
      - RUSTFS_ACCESS_KEY=rustfsadmin
      - RUSTFS_SECRET_KEY=rustfsadmin
    platform: linux/amd64
    ports:
      - "9000:9000" # Map port 9001 of the host to port 9000 of the container
    volumes:
      - ../../target/x86_64-unknown-linux-gnu/release/rustfs:/app/rustfs
    command: "/app/rustfs"

  node1:
    image: rustfs/rustfs:latest
    container_name: node1
    hostname: node1
    environment:
      - RUSTFS_VOLUMES=http://node{0...3}:9000/data/rustfs{0...3}
      - RUSTFS_ADDRESS=0.0.0.0:9000
      - RUSTFS_CONSOLE_ENABLE=true
      - RUSTFS_ACCESS_KEY=rustfsadmin
      - RUSTFS_SECRET_KEY=rustfsadmin
    platform: linux/amd64
    ports:
      - "9001:9000" # Map port 9002 of the host to port 9000 of the container
    volumes:
      - ../../target/x86_64-unknown-linux-gnu/release/rustfs:/app/rustfs
    command: "/app/rustfs"

  node2:
    image: rustfs/rustfs:latest
    container_name: node2
    hostname: node2
    environment:
      - RUSTFS_VOLUMES=http://node{0...3}:9000/data/rustfs{0...3}
      - RUSTFS_ADDRESS=0.0.0.0:9000
      - RUSTFS_CONSOLE_ENABLE=true
      - RUSTFS_ACCESS_KEY=rustfsadmin
      - RUSTFS_SECRET_KEY=rustfsadmin
    platform: linux/amd64
    ports:
      - "9002:9000" # Map port 9003 of the host to port 9000 of the container
    volumes:
      - ../../target/x86_64-unknown-linux-gnu/release/rustfs:/app/rustfs
    command: "/app/rustfs"

  node3:
    image: rustfs/rustfs:latest
    container_name: node3
    hostname: node3
    environment:
      - RUSTFS_VOLUMES=http://node{0...3}:9000/data/rustfs{0...3}
      - RUSTFS_ADDRESS=0.0.0.0:9000
      - RUSTFS_CONSOLE_ENABLE=true
      - RUSTFS_ACCESS_KEY=rustfsadmin
      - RUSTFS_SECRET_KEY=rustfsadmin
    platform: linux/amd64
    ports:
      - "9003:9000" # Map port 9004 of the host to port 9000 of the container
    volumes:
      - ../../target/x86_64-unknown-linux-gnu/release/rustfs:/app/rustfs
    command: "/app/rustfs"
