Compare commits

4 Commits

3 changed files with 33 additions and 21 deletions

View File

@@ -101,3 +101,5 @@ BingPaper 支持通过配置文件YAML和环境变量进行配置。
- `BINGPAPER_STORAGE_TYPE=s3` - `BINGPAPER_STORAGE_TYPE=s3`
- `BINGPAPER_STORAGE_S3_BUCKET=my-images` - `BINGPAPER_STORAGE_S3_BUCKET=my-images`
- `BINGPAPER_ADMIN_PASSWORD_BCRYPT="$2a$10$..."` - `BINGPAPER_ADMIN_PASSWORD_BCRYPT="$2a$10$..."`
- `HOST_PORT=8080` (仅限 Docker Compose 部署,控制宿主机映射到外部的端口)
- `BINGPAPER_SERVER_PORT=8080` (控制应用监听端口及容器内部端口)

View File

@@ -1,8 +1,11 @@
# Stage 1: Build Frontend # Stage 1: Build Frontend
FROM --platform=$BUILDPLATFORM node:20-alpine AS node-builder FROM --platform=$BUILDPLATFORM node:20-alpine AS node-builder
ARG NPM_REGISTRY
WORKDIR /webapp WORKDIR /webapp
# 复制 package.json 和 lock 文件以利用 layer 缓存 # 复制 package.json 和 lock 文件以利用 layer 缓存
COPY webapp/package*.json ./ COPY webapp/package*.json ./
# 如果设置了 NPM_REGISTRY则配置 npm 镜像
RUN if [ -n "$NPM_REGISTRY" ]; then npm config set registry $NPM_REGISTRY; fi
# 使用 npm ci 以获得更快且可重现的构建(如果存在 package-lock.json # 使用 npm ci 以获得更快且可重现的构建(如果存在 package-lock.json
RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi RUN if [ -f package-lock.json ]; then npm ci; else npm install; fi
# 复制其余源码并构建 # 复制其余源码并构建
@@ -11,6 +14,8 @@ RUN npm run build
# Stage 2: Build Backend # Stage 2: Build Backend
FROM --platform=$BUILDPLATFORM golang:1.25.5-alpine AS builder FROM --platform=$BUILDPLATFORM golang:1.25.5-alpine AS builder
ARG GOPROXY
ENV GOPROXY=$GOPROXY
# 安装 Git 以支持某些 Go 模块依赖 # 安装 Git 以支持某些 Go 模块依赖
RUN apk add --no-cache git RUN apk add --no-cache git
WORKDIR /app WORKDIR /app

View File

@@ -1,31 +1,36 @@
services: services:
bingpaper: bingpaper:
build: . build:
context: .
args:
- GOPROXY=${GOPROXY:-https://proxy.golang.org,direct}
- NPM_REGISTRY=${NPM_REGISTRY:-https://registry.npmjs.org/}
container_name: bingpaper container_name: bingpaper
restart: always restart: always
ports: ports:
- "8080:8080" - "${HOST_PORT:-8080}:${BINGPAPER_SERVER_PORT:-8080}"
volumes: volumes:
- ./data:/app/data - ./data:/app/data
environment: environment:
- BINGPAPER_SERVER_PORT=8080 - TZ=${TZ:-Asia/Shanghai}
- BINGPAPER_LOG_LEVEL=info - BINGPAPER_SERVER_PORT=${BINGPAPER_SERVER_PORT:-8080}
- BINGPAPER_API_MODE=local - BINGPAPER_LOG_LEVEL=${BINGPAPER_LOG_LEVEL:-info}
- BINGPAPER_CRON_ENABLED=true - BINGPAPER_API_MODE=${BINGPAPER_API_MODE:-local}
- BINGPAPER_DB_TYPE=sqlite - BINGPAPER_CRON_ENABLED=${BINGPAPER_CRON_ENABLED:-true}
- BINGPAPER_DB_DSN=data/bing_paper.db - BINGPAPER_DB_TYPE=${BINGPAPER_DB_TYPE:-sqlite}
- BINGPAPER_STORAGE_TYPE=local - BINGPAPER_DB_DSN=${BINGPAPER_DB_DSN:-data/bing_paper.db}
- BINGPAPER_STORAGE_LOCAL_ROOT=data/picture - BINGPAPER_STORAGE_TYPE=${BINGPAPER_STORAGE_TYPE:-local}
- BINGPAPER_RETENTION_DAYS=30 - BINGPAPER_STORAGE_LOCAL_ROOT=${BINGPAPER_STORAGE_LOCAL_ROOT:-data/picture}
- BINGPAPER_RETENTION_DAYS=${BINGPAPER_RETENTION_DAYS:-30}
# S3 配置 (可选) # S3 配置 (可选)
# - BINGPAPER_STORAGE_S3_ENDPOINT= # - BINGPAPER_STORAGE_S3_ENDPOINT=${BINGPAPER_STORAGE_S3_ENDPOINT:-}
# - BINGPAPER_STORAGE_S3_REGION= # - BINGPAPER_STORAGE_S3_REGION=${BINGPAPER_STORAGE_S3_REGION:-}
# - BINGPAPER_STORAGE_S3_BUCKET= # - BINGPAPER_STORAGE_S3_BUCKET=${BINGPAPER_STORAGE_S3_BUCKET:-}
# - BINGPAPER_STORAGE_S3_ACCESS_KEY= # - BINGPAPER_STORAGE_S3_ACCESS_KEY=${BINGPAPER_STORAGE_S3_ACCESS_KEY:-}
# - BINGPAPER_STORAGE_S3_SECRET_KEY= # - BINGPAPER_STORAGE_S3_SECRET_KEY=${BINGPAPER_STORAGE_S3_SECRET_KEY:-}
# - BINGPAPER_STORAGE_S3_PUBLIC_URL_PREFIX= # - BINGPAPER_STORAGE_S3_PUBLIC_URL_PREFIX=${BINGPAPER_STORAGE_S3_PUBLIC_URL_PREFIX:-}
# WebDAV 配置 (可选) # WebDAV 配置 (可选)
# - BINGPAPER_STORAGE_WEBDAV_URL= # - BINGPAPER_STORAGE_WEBDAV_URL=${BINGPAPER_STORAGE_WEBDAV_URL:-}
# - BINGPAPER_STORAGE_WEBDAV_USERNAME= # - BINGPAPER_STORAGE_WEBDAV_USERNAME=${BINGPAPER_STORAGE_WEBDAV_USERNAME:-}
# - BINGPAPER_STORAGE_WEBDAV_PASSWORD= # - BINGPAPER_STORAGE_WEBDAV_PASSWORD=${BINGPAPER_STORAGE_WEBDAV_PASSWORD:-}
# - BINGPAPER_STORAGE_WEBDAV_PUBLIC_URL_PREFIX= # - BINGPAPER_STORAGE_WEBDAV_PUBLIC_URL_PREFIX=${BINGPAPER_STORAGE_WEBDAV_PUBLIC_URL_PREFIX:-}