A decentralized music tracking and discovery platform built on AT Protocol 🎵
listenbrainz spotify atproto lastfm musicbrainz scrobbling

chore: add docker files

Changed files
+214 -1
apps
crates
analytics
dropbox
googledrive
jetstream
scrobbler
spotify
storage
webscrobbler
+8
.dockerignore
··· 1 + target 2 + node_modules 3 + **/dist 4 + **/*/node_modules 5 + .DS_Store 6 + Dockerfile 7 + *.ddb 8 + *.ddb.wal
+29
Dockerfile
··· 1 + FROM node:22 2 + 3 + RUN apt-get update && apt-get install -y curl 4 + 5 + RUN curl -fsSL https://bun.sh/install | bash 6 + 7 + RUN npm install -g turbo 8 + 9 + ENV PATH="/root/.bun/bin:${PATH}" 10 + 11 + WORKDIR /app 12 + 13 + COPY ./apps ./apps 14 + 15 + COPY ./crates ./crates 16 + 17 + COPY ./package.json ./package.json 18 + 19 + COPY ./bun.lock ./bun.lock 20 + 21 + COPY ./turbo.json ./turbo.json 22 + 23 + RUN bun install 24 + 25 + EXPOSE 8000 26 + 27 + EXPOSE 3004 28 + 29 + CMD ["turbo", "db:migrate", "prod:all", "--filter=@rocksky/api"]
+2 -1
apps/api/package.json
··· 18 18 "dev:xrpc": "tsx --watch ./src/server.ts", 19 19 "prod:xrpc": "tsx ./src/server.ts", 20 20 "db:migrate": "drizzle-kit migrate", 21 - "db:gen-migration": "drizzle-kit generate" 21 + "db:gen-migration": "drizzle-kit generate", 22 + "prod:all": "concurrently 'tsx ./src/index.ts' 'tsx ./src/server.ts'" 22 23 }, 23 24 "dependencies": { 24 25 "@atproto/api": "^0.13.31",
+35
crates/analytics/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder 2 + 3 + RUN apt-get update && apt-get install -y \ 4 + curl \ 5 + wget \ 6 + unzip \ 7 + libssl-dev \ 8 + pkg-config \ 9 + build-essential \ 10 + cmake 11 + 12 + RUN wget https://github.com/duckdb/duckdb/releases/download/v1.3.2/libduckdb-linux-amd64.zip && \ 13 + unzip libduckdb-linux-amd64.zip && \ 14 + mv libduckdb.so /usr/lib && \ 15 + mv libduckdb_static.a /usr/lib && \ 16 + mv duckdb.h /usr/include && \ 17 + mv duckdb.hpp /usr/include 18 + 19 + WORKDIR /app 20 + 21 + COPY ./crates/analytics ./crates/analytics 22 + COPY Cargo.toml . 23 + COPY Cargo.lock . 24 + 25 + RUN cargo build --release -p analytics 26 + 27 + FROM debian:bookworm-slim 28 + 29 + COPY --from=builder /app/target/release/analytics /usr/local/bin/analytics 30 + 31 + COPY --from=builder /usr/lib/libduckdb.so /usr/lib/libduckdb.so 32 + 33 + EXPOSE 7879 34 + 35 + CMD ["analytics"]
+23
crates/dropbox/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder 2 + 3 + RUN apt-get update && apt-get install -y \ 4 + libssl-dev \ 5 + pkg-config \ 6 + build-essential 7 + 8 + 9 + WORKDIR /app 10 + 11 + COPY ./crates/dropbox ./crates/dropbox 12 + COPY Cargo.toml . 13 + COPY Cargo.lock . 14 + 15 + RUN cargo build --release -p dropbox 16 + 17 + FROM debian:bookworm-slim 18 + 19 + COPY --from=builder /app/target/release/dropbox /usr/local/bin/dropbox 20 + 21 + EXPOSE 7881 22 + 23 + CMD ["dropbox"]
+23
crates/googledrive/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder 2 + 3 + RUN apt-get update && apt-get install -y \ 4 + libssl-dev \ 5 + pkg-config \ 6 + build-essential 7 + 8 + 9 + WORKDIR /app 10 + 11 + COPY ./crates/googledrive ./crates/googledrive 12 + COPY Cargo.toml . 13 + COPY Cargo.lock . 14 + 15 + RUN cargo build --release -p googledrive 16 + 17 + FROM debian:bookworm-slim 18 + 19 + COPY --from=builder /app/target/release/googledrive /usr/local/bin/googledrive 20 + 21 + EXPOSE 7880 22 + 23 + CMD ["googledrive"]
+23
crates/jetstream/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder 2 + 3 + RUN apt-get update && apt-get install -y \ 4 + libssl-dev \ 5 + pkg-config \ 6 + build-essential 7 + 8 + 9 + WORKDIR /app 10 + 11 + COPY ./crates/jetstream ./crates/jetstream 12 + COPY Cargo.toml . 13 + COPY Cargo.lock . 14 + 15 + RUN cargo build --release -p jetstream 16 + 17 + FROM debian:bookworm-slim 18 + 19 + COPY --from=builder /app/target/release/jetstream /usr/local/bin/jetstream 20 + 21 + EXPOSE 7880 22 + 23 + CMD ["jetstream"]
+23
crates/scrobbler/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder 2 + 3 + RUN apt-get update && apt-get install -y \ 4 + libssl-dev \ 5 + pkg-config \ 6 + build-essential 7 + 8 + 9 + WORKDIR /app 10 + 11 + COPY ./crates/scrobbler ./crates/scrobbler 12 + COPY Cargo.toml . 13 + COPY Cargo.lock . 14 + 15 + RUN cargo build --release -p scrobbler 16 + 17 + FROM debian:bookworm-slim 18 + 19 + COPY --from=builder /app/target/release/scrobbler /usr/local/bin/scrobbler 20 + 21 + EXPOSE 7882 22 + 23 + CMD ["scrobbler"]
+21
crates/spotify/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder 2 + 3 + RUN apt-get update && apt-get install -y \ 4 + libssl-dev \ 5 + pkg-config \ 6 + build-essential 7 + 8 + 9 + WORKDIR /app 10 + 11 + COPY ./crates/spotify ./crates/spotify 12 + COPY Cargo.toml . 13 + COPY Cargo.lock . 14 + 15 + RUN cargo build --release -p spotify 16 + 17 + FROM debian:bookworm-slim 18 + 19 + COPY --from=builder /app/target/release/spotify /usr/local/bin/spotify 20 + 21 + CMD ["spotify"]
+1
crates/storage/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder
+23
crates/webscrobbler/Dockerfile
··· 1 + FROM rust:1.88-bookworm AS builder 2 + 3 + RUN apt-get update && apt-get install -y \ 4 + libssl-dev \ 5 + pkg-config \ 6 + build-essential 7 + 8 + 9 + WORKDIR /app 10 + 11 + COPY ./crates/webscrobbler ./crates/webscrobbler 12 + COPY Cargo.toml . 13 + COPY Cargo.lock . 14 + 15 + RUN cargo build --release -p webscrobbler 16 + 17 + FROM debian:bookworm-slim 18 + 19 + COPY --from=builder /app/target/release/webscrobbler /usr/local/bin/webscrobbler 20 + 21 + EXPOSE 7883 22 + 23 + CMD ["webscrobbler"]
+3
turbo.json
··· 43 43 "pkl:gen": { 44 44 "cache": false 45 45 }, 46 + "prod:all": { 47 + "cache": false 48 + }, 46 49 "start": { 47 50 "persistent": true, 48 51 "cache": false