services: rustfs: image: rustfs/rustfs:1.0.0-alpha.59 container_name: rustfs_container restart: always ports: - 100.64.0.42:9000:9000 volumes: - /vol2/1000/rustfs_vol2:/data - ./data:/app/data:rw # 新增,共用 ./data environment: RUSTFS_VOLUMES: /data/rustfs0 RUSTFS_ADDRESS: :9000 RUSTFS_SERVER_DOMAINS: rfs.jmsu.top RUSTFS_ACCESS_KEY: lingyuzeng RUSTFS_SECRET_KEY: rust@Hotwa2020 RUSTFS_CONSOLE_ENABLE: "true" rustfs-s3-toolkit: image: hotwa/rustfs-s3-toolkit:latest build: context: .. dockerfile: docker/Dockerfile container_name: rustfs-s3-toolkit restart: always volumes: - ./data:/app/data:rw ports: - "100.64.0.42:9009:9009" consul-agent: stop_signal: SIGTERM stop_grace_period: 30s image: hashicorp/consul:1.21 command: - agent - -server=false - -node=rustfs-100-64-0-42 - -client=0.0.0.0 - -bind=0.0.0.0 - -advertise=100.64.0.42 - -retry-join=100.64.0.1 - -datacenter=dc1 - -data-dir=/consul/data environment: CONSUL_LOCAL_CONFIG: '{"leave_on_terminate": true}' ports: - "100.64.0.42:8500:8500/tcp" - "100.64.0.42:8600:8600/tcp" - "100.64.0.42:8600:8600/udp" - "100.64.0.42:8301:8301/tcp" - "100.64.0.42:8301:8301/udp" healthcheck: test: ["CMD", "consul", "info"] interval: 5s timeout: 3s retries: 30 start_period: 10s restart: unless-stopped registrar: image: hashicorp/consul:1.21 depends_on: consul-agent: condition: service_healthy rustfs: condition: service_started environment: CONSUL_HTTP_ADDR: "http://consul-agent:8500" SERVICE_NAME: "rustfs" SERVICE_ADDR: "100.64.0.42" SERVICE_PORT: "9000" # 可选:打标签,方便 SRV 过滤 SERVICE_TAGS: "console" # 健康检查参数(可按需改) CHECK_TYPE: "tcp" # 可选: "http" 或 "tcp" CHECK_PATH: "/healthz" # 仅 http 模式用 CHECK_INTERVAL: "10s" CHECK_TIMEOUT: "2s" DEREG_AFTER: "1m" # 持续失败 1 分钟后自动从 Catalog 摘除 volumes: - ./registrar.sh:/registrar.sh:ro entrypoint: ["/bin/sh","-lc","/registrar.sh"] restart: unless-stopped networks: {}