Files

86 lines
1.7 KiB
Docker
Raw Permalink Normal View History

2025-04-30 02:27:22 +08:00
# Build frontend
FROM node:20-bullseye AS frontend-builder
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y \
python3 \
make \
g++ \
&& rm -rf /var/lib/apt/lists/*
# Copy package files
COPY package.json yarn.lock ./
# Install dependencies with specific flags
RUN yarn install --frozen-lockfile
# Copy source files
COPY . .
# Build frontend
RUN yarn build
# Build Rust backend
2025-09-25 08:37:43 +08:00
FROM rust:1.90-slim AS rust-builder
2025-04-30 02:27:22 +08:00
WORKDIR /app
# Install required system dependencies
RUN apt-get update && apt-get install -y \
cmake \
pkg-config \
libssl-dev \
2025-05-01 01:24:07 +08:00
glib-2.0-dev \
2025-04-30 02:27:22 +08:00
libclang-dev \
2025-05-01 03:02:45 +08:00
g++ \
wget \
xz-utils \
2025-04-30 02:27:22 +08:00
&& rm -rf /var/lib/apt/lists/*
# Copy Rust project files
COPY src-tauri/Cargo.toml src-tauri/Cargo.lock ./src-tauri/
COPY src-tauri/src ./src-tauri/src
2025-06-19 00:18:16 +08:00
COPY src-tauri/crates ./src-tauri/crates
2025-04-30 02:27:22 +08:00
# Build Rust backend
WORKDIR /app/src-tauri
2025-05-01 03:02:45 +08:00
RUN rustup component add rustfmt
RUN cargo build --no-default-features --features headless --release
2025-04-30 02:27:22 +08:00
# Final stage
2025-09-26 19:19:24 +08:00
FROM debian:trixie-slim AS final
2025-04-30 02:27:22 +08:00
WORKDIR /app
# Install runtime dependencies, SSL certificates and Chinese fonts
2025-04-30 02:27:22 +08:00
RUN apt-get update && apt-get install -y \
2025-04-30 02:49:37 +08:00
libssl3 \
2025-05-01 15:48:49 +08:00
ca-certificates \
fonts-wqy-microhei \
netbase \
nscd \
2025-09-26 22:10:44 +08:00
ffmpeg \
2025-05-01 15:48:49 +08:00
&& update-ca-certificates \
2025-04-30 02:27:22 +08:00
&& rm -rf /var/lib/apt/lists/*
RUN touch /etc/netgroup
RUN mkdir -p /var/run/nscd && chmod 755 /var/run/nscd
2025-05-01 16:12:58 +08:00
# Add /app to PATH
ENV PATH="/app:${PATH}"
2025-04-30 02:27:22 +08:00
# Copy built frontend
COPY --from=frontend-builder /app/dist ./dist
# Copy built Rust binary
COPY --from=rust-builder /app/src-tauri/target/release/bili-shadowreplay .
# Expose port
EXPOSE 3000
# Run the application
2025-08-15 22:47:52 +08:00
CMD ["sh", "-c", "nscd && ./bili-shadowreplay"]