# Docker Compose file for setting up Minio, createbuckets, app_cpu, and app_gpu services version: '3.7' services: # Minio service for object storage minio: image: minio/minio volumes: - minio_data:/data ports: - '9000:9000' - '9001:9001' environment: # Set the root user and password for Minio MINIO_ROOT_USER: minioadmin # This acts as AWS_ACCESS_KEY MINIO_ROOT_PASSWORD: minioadmin # This acts as AWS_SECRET_ACCESS_KEY command: server --console-address ":9001" /data restart: always healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live'] interval: 30s timeout: 20s retries: 3 networks: vpcbr: ipv4_address: 10.5.0.2 # createbuckets service to create a bucket and set its policy createbuckets: image: minio/mc depends_on: - minio entrypoint: > /bin/sh -c " /usr/bin/mc alias set myminio http://minio:9000 minioadmin minioadmin; /usr/bin/mc mb myminio/mybucket; /usr/bin/mc policy set public myminio/mybucket; exit 0; " networks: vpcbr: # app_cpu service for running the CPU version of the application app_cpu_s3fs: volumes: - app_data_cpu_s3fs:/app/server/build/jan image: ghcr.io/janhq/jan-server:dev-cpu-latest environment: # Set the AWS access key, secret access key, bucket name, endpoint, and region for app_cpu AWS_ACCESS_KEY_ID: minioadmin AWS_SECRET_ACCESS_KEY: minioadmin S3_BUCKET_NAME: mybucket AWS_ENDPOINT: http://10.5.0.2:9000 AWS_REGION: us-east-1 API_BASE_URL: http://localhost:1337 restart: always profiles: - cpu-s3fs ports: - '3000:3000' - '1337:1337' - '3928:3928' networks: vpcbr: ipv4_address: 10.5.0.3 # app_gpu service for running the GPU version of the application app_gpu_s3fs: deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] image: ghcr.io/janhq/jan-server:dev-cuda-12.2-latest volumes: - app_data_gpu_s3fs:/app/server/build/jan restart: always environment: # Set the AWS access key, secret access key, bucket name, endpoint, and region for app_gpu AWS_ACCESS_KEY_ID: minioadmin AWS_SECRET_ACCESS_KEY: minioadmin S3_BUCKET_NAME: mybucket AWS_ENDPOINT: http://10.5.0.2:9000 AWS_REGION: us-east-1 API_BASE_URL: http://localhost:1337 profiles: - gpu-s3fs ports: - '3000:3000' - '1337:1337' - '3928:3928' networks: vpcbr: ipv4_address: 10.5.0.4 app_cpu_fs: image: ghcr.io/janhq/jan-server:dev-cpu-latest volumes: - app_data_cpu_fs:/app/server/build/jan environment: API_BASE_URL: http://localhost:1337 restart: always profiles: - cpu-fs ports: - '3000:3000' - '1337:1337' - '3928:3928' networks: vpcbr: ipv4_address: 10.5.0.5 # app_gpu service for running the GPU version of the application app_gpu_fs: deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] image: ghcr.io/janhq/jan-server:dev-cuda-12.2-latest volumes: - app_data_gpu_fs:/app/server/build/jan restart: always environment: API_BASE_URL: http://localhost:1337 profiles: - gpu-fs ports: - '3000:3000' - '1337:1337' - '3928:3928' networks: vpcbr: ipv4_address: 10.5.0.6 volumes: minio_data: app_data_cpu_s3fs: app_data_gpu_s3fs: app_data_cpu_fs: app_data_gpu_fs: networks: vpcbr: driver: bridge ipam: config: - subnet: 10.5.0.0/16 gateway: 10.5.0.1 # Usage: # - Run 'docker compose --profile cpu-s3fs up -d' to start the app_cpu service # - Run 'docker compose --profile gpu-s3fs up -d' to start the app_gpu service # - Run 'docker compose --profile cpu-fs up -d' to start the app_cpu service # - Run 'docker compose --profile gpu-fs up -d' to start the app_gpu service