# 使用现有的本地构建成果 - Node.js 服务器版本 FROM node:20-alpine # 安装必要的系统依赖 RUN apk add --no-cache curl # 创建应用用户 RUN addgroup -g 1001 -S nodejs && \ adduser -S nodejs -u 1001 # 设置工作目录 WORKDIR /app # 设置环境变量 ENV NODE_ENV=production ENV PORT=8080 # 复制package文件 COPY package*.json ./ # 安装所有依赖(运行时需要adapter) RUN npm ci --ignore-scripts && \ npm cache clean --force # 复制本地构建的完整产物 COPY --chown=nodejs:nodejs dist/ ./dist # 创建数据目录 RUN mkdir -p /app/data && \ chown -R nodejs:nodejs /app # 切换到非root用户 USER nodejs # 暴露端口 EXPOSE 8080 # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \ CMD curl -f http://localhost:8080/ || exit 1 # 启动应用 CMD ["node", "./dist/server/entry.mjs"] # 定义构建参数 ARG VERSION=latest ARG BUILD_DATE ARG VCS_REF # 添加标签信息 LABEL maintainer="walllee" \ org.opencontainers.image.title="Moodist" \ org.opencontainers.image.description="Ambient sounds for focus and calm - 多语言环境音应用 (Full Stack)" \ org.opencontainers.image.version="${VERSION}" \ org.opencontainers.image.created="${BUILD_DATE}" \ org.opencontainers.image.revision="${VCS_REF}" \ org.opencontainers.image.source="https://github.com/wheesys/moodist" \ org.opencontainers.image.licenses="MIT"