diff --git a/application.yml b/application.yml new file mode 100644 index 0000000..dfd8935 --- /dev/null +++ b/application.yml @@ -0,0 +1,32 @@ +# application.yml (Example) +server: # REST and WS server + port: 2333 + address: 0.0.0.0 # Listen on all interfaces within the container +lavalink: + server: + password: "youshallnotpass" # CHANGE THIS to a strong password + sources: + youtube: true + bandcamp: true + soundcloud: true + twitch: true + vimeo: true + http: true + local: false + # bufferDurationMs: 400 # How many milliseconds of audio to buffer? Lower values are less safe. + # youtubePlaylistLoadLimit: 6 # Number of pages at 100 tracks each + # playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds + # youtubeSearchEnabled: true + # soundcloudSearchEnabled: true + # bandcampSearchEnabled: true # Not implemented by LavaLink currently + # Default values are generally fine + # You can find more options here: https://github.com/lavalink-devs/Lavalink/blob/master/IMPLEMENTATION.md#configuration +logging: + file: + max-history: 30 + max-size: 1GB + path: ./logs/ + + level: + root: INFO + lavalink: INFO \ No newline at end of file diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..8dbd268 --- /dev/null +++ b/compose.yml @@ -0,0 +1,46 @@ +# docker-compose.yml + +version: '3.8' + +services: + # The Rust Discord Bot Service + app: + # Build the image from the Dockerfile in the current directory (.) + build: . + container_name: discord-bot-app + restart: unless-stopped + # Pass environment variables from the .env file + env_file: + - .env + # Depend on the lavalink service to ensure it starts first (best practice) + depends_on: + - lavalink + + # The LavaLink Service + lavalink: + # Use a Java Runtime Environment image (Alpine base for smaller size) + image: eclipse-temurin:17-jre-alpine + container_name: lavalink-server + restart: unless-stopped + # Set the working directory inside the container + working_dir: /opt/lavalink + # Mount the local Lavalink.jar and application.yml into the container + volumes: + - ./Lavalink.jar:/opt/lavalink/Lavalink.jar:ro # Mount Jar read-only + - ./application.yml:/opt/lavalink/application.yml:ro # Mount config read-only + - ./logs:/opt/lavalink/logs # Mount logs directory (optional) + # Expose the LavaLink port to the host machine (optional, but useful for debugging) + # and makes it reachable by the 'app' service via Docker network. + ports: + - "2333:2333" + # Command to run LavaLink inside the container + command: ["java", "-jar", "Lavalink.jar"] + +# Define networks (optional, Docker Compose creates a default one) +# networks: +# default: +# driver: bridge + +# Define volumes (optional, if you need persistent data beyond logs) +# volumes: +# lavalink_logs: \ No newline at end of file