diff --git a/deploy/Dockerfile.python b/deploy/Dockerfile.python new file mode 100644 index 0000000..afb83a2 --- /dev/null +++ b/deploy/Dockerfile.python @@ -0,0 +1,22 @@ +FROM nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 + +WORKDIR /app + +# Install system dependencies +# ffmpeg is required for audio processing +# python3 and pip are required since we are using a base cuda image +RUN apt-get update && \ + apt-get install -y ffmpeg python3 python3-pip && \ + rm -rf /var/lib/apt/lists/* + +# Install Python dependencies +# We install dependencies globally as this is a container +# Install audio-separator with GPU support +RUN pip3 install --no-cache-dir fastapi uvicorn[standard] audio-separator[gpu] python-multipart + +# Copy the server script +COPY scripts/server.py . + +EXPOSE 24801 + +CMD ["python3", "server.py"] diff --git a/deploy/Dockerfile.web b/deploy/Dockerfile.web new file mode 100644 index 0000000..5ce6838 --- /dev/null +++ b/deploy/Dockerfile.web @@ -0,0 +1,27 @@ +FROM oven/bun:1 AS builder + +WORKDIR /app + +COPY package.json bun.lock ./ +RUN bun install --frozen-lockfile + +COPY . . + +# Build the application +RUN bun run build + +################################################################################ +# Production image +FROM oven/bun:1 + +WORKDIR /app + +COPY --from=builder /app/build ./build +COPY --from=builder /app/package.json ./package.json +COPY --from=builder /app/node_modules ./node_modules + +EXPOSE 3000 + +# Note: If using adapter-auto, ensure it resolves to a Node-compatible build. +# If you encounter issues, consider installing @sveltejs/adapter-node and updating svelte.config.js. +CMD ["bun", "./build/index.js"] diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml new file mode 100644 index 0000000..86ab0fc --- /dev/null +++ b/deploy/docker-compose.yml @@ -0,0 +1,52 @@ +services: + web: + container_name: amaoke-web + build: + context: .. + dockerfile: deploy/Dockerfile.web + ports: + - "3000:3000" + environment: + - ORIGIN=http://localhost:3000 + - MONGODB_URI=mongodb://cat:meow@db:27017/amaoke?authSource=admin + - AUDIO_SEPARATOR_API=http://ai:24801 + depends_on: + - db + - ai + restart: unless-stopped + + ai: + container_name: amaoke-ai + build: + context: .. + dockerfile: deploy/Dockerfile.python + # ports: + # - "24801:24801" + volumes: + - python_temp:/app/temp_audio + - python_cache:/root/.cache + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 + capabilities: [gpu] + restart: unless-stopped + + db: + image: mongo:latest + restart: unless-stopped + container_name: amaoke-db + ports: + - "127.0.0.1:27017:27017" + environment: + MONGO_INITDB_ROOT_USERNAME: cat + MONGO_INITDB_ROOT_PASSWORD: meow + volumes: + - mongodb_data:/data/db + +volumes: + mongodb_data: + python_temp: + python_cache: