1
0
mirror of https://github.com/hanxi/xiaomusic.git synced 2026-03-15 08:13:16 +08:00
Files
xiaomusic/Dockerfile
2026-01-14 16:58:15 +08:00

73 lines
1.6 KiB
Docker

# 第一阶段:构建阶段
FROM python:3.14-alpine AS builder
# 安装构建依赖
RUN apk add --no-cache \
build-base \
nodejs \
npm \
zlib-dev \
jpeg-dev \
freetype-dev \
lcms2-dev \
openjpeg-dev \
tiff-dev \
libwebp-dev
# 安装PDM
RUN pip install -U pdm
ENV PDM_CHECK_UPDATE=false
WORKDIR /app
COPY pyproject.toml README.md package.json ./
# 安装Python和Node.js依赖
RUN pdm install --prod --no-editable -v
RUN npm install --loglevel=verbose
# 复制应用代码
COPY xiaomusic/ ./xiaomusic/
COPY plugins/ ./plugins/
COPY holiday/ ./holiday/
COPY xiaomusic.py .
# 第二阶段:运行阶段
FROM python:3.14-alpine
# 安装运行时依赖
RUN apk add --no-cache \
ffmpeg \
nodejs \
npm
# 设置工作目录
WORKDIR /app
# 从构建阶段复制产物
COPY --from=builder /app/.venv ./.venv
COPY --from=builder /app/node_modules ./node_modules/
COPY --from=builder /app/xiaomusic/ ./xiaomusic/
COPY --from=builder /app/plugins/ ./plugins/
COPY --from=builder /app/holiday/ ./holiday/
COPY --from=builder /app/xiaomusic.py .
COPY --from=builder /app/xiaomusic/__init__.py /base_version.py
COPY --from=builder /app/package.json .
# 创建FFmpeg软链接目录
RUN mkdir -p /app/ffmpeg/bin \
&& ln -s /usr/bin/ffmpeg /app/ffmpeg/bin/ffmpeg \
&& ln -s /usr/bin/ffprobe /app/ffmpeg/bin/ffprobe
RUN touch /app/.dockerenv
# 设置卷和暴露端口
VOLUME /app/conf
VOLUME /app/music
EXPOSE 8090
# 设置环境变量
ENV TZ=Asia/Shanghai
ENV PATH=/app/.venv/bin:/usr/local/bin:$PATH
# 直接启动xiaomusic应用
CMD ["/app/.venv/bin/python3", "/app/xiaomusic.py"]