OuonnkiTV armv7 image
https://github.com/Ouonnki/OuonnkiTV
Dockerfile
# === 第一阶段:利用电脑原生 AMD64 性能打包一切、安装一切 ===
FROM --platform=$BUILDPLATFORM node:20-alpine AS builder
WORKDIR /app
# 安装 pnpm
RUN npm install -g [email protected]
# 复制依赖声明
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY packages/cms-core/package.json packages/cms-core/package.json
# 安装前端核心依赖(无轻量级 CSS 处理器,避免二进制问题)
RUN pnpm install --frozen-lockfile
# 复制源码并构建前端成品
COPY . .
RUN pnpm build
# 预装生产环境代理所需的 express 和 cors(利用 x86 平台快速安装)
RUN mkdir -p /app/prod_node_modules && \
cd /app/prod_node_modules && \
echo '{"type":"module"}' > package.json && \
npm install --no-audit --no-fund [email protected] [email protected]
# === 第二阶段:纯粹的 ARMv7 运行时镜像 ===
FROM node:20-alpine AS production
RUN apk add --no-cache nginx supervisor && rm -rf /var/cache/apk/*
RUN mkdir -p /run/nginx /var/log/supervisor /app
WORKDIR /app
# 1. 复制代理服务端代码(新版本需包含 shared/ 和 scripts/ 目录)
COPY proxy-server.js ./
COPY shared/ ./shared/
COPY scripts/generate-runtime-config.mjs ./scripts/generate-runtime-config.mjs
# 2. 复制运行时入口脚本(新版本新增)
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# 3. 直接从第一阶段复制预装的依赖(无需再安装)
COPY --from=builder /app/prod_node_modules/package.json ./package.json
COPY --from=builder /app/prod_node_modules/node_modules ./node_modules
# 4. 从第一阶段复制构建好的前端静态文件
COPY --from=builder /app/dist /usr/share/nginx/html
# 5. 复制配置文件
COPY nginx.conf /etc/nginx/nginx.conf
COPY supervisord.conf /etc/supervisord.conf
EXPOSE 80
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
Content type
Image
Digest
sha256:d673c34db…
Size
63.3 MB
Last updated
2 months ago
docker pull vera2016/ouonnkitv-armv7