Spaces:
Sleeping
Sleeping
Upload 3 files
Browse files- web/Dockerfile +47 -0
- web/docker-compose.yml +50 -0
- web/start.sh +13 -0
web/Dockerfile
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM oven/bun:latest AS builder
|
| 2 |
+
|
| 3 |
+
WORKDIR /build
|
| 4 |
+
COPY web/package.json .
|
| 5 |
+
RUN bun install
|
| 6 |
+
COPY ./web .
|
| 7 |
+
COPY ./VERSION .
|
| 8 |
+
RUN DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$(cat VERSION) bun run build
|
| 9 |
+
|
| 10 |
+
FROM golang:alpine AS builder2
|
| 11 |
+
|
| 12 |
+
ENV GO111MODULE=on \
|
| 13 |
+
CGO_ENABLED=0 \
|
| 14 |
+
GOOS=linux
|
| 15 |
+
|
| 16 |
+
WORKDIR /build
|
| 17 |
+
|
| 18 |
+
ADD go.mod go.sum ./
|
| 19 |
+
RUN go mod download
|
| 20 |
+
|
| 21 |
+
COPY . .
|
| 22 |
+
COPY --from=builder /build/dist ./web/dist
|
| 23 |
+
RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)'" -o one-api
|
| 24 |
+
|
| 25 |
+
FROM alpine
|
| 26 |
+
|
| 27 |
+
RUN apk update \
|
| 28 |
+
&& apk upgrade \
|
| 29 |
+
&& apk add --no-cache ca-certificates tzdata ffmpeg bash \
|
| 30 |
+
&& update-ca-certificates
|
| 31 |
+
|
| 32 |
+
# 创建必要的目录并设置权限
|
| 33 |
+
RUN mkdir -p /data /data/logs /app/logs \
|
| 34 |
+
&& chmod -R 777 /data /app/logs
|
| 35 |
+
|
| 36 |
+
COPY --from=builder2 /build/one-api /
|
| 37 |
+
COPY start.sh /start.sh
|
| 38 |
+
RUN chmod +x /start.sh
|
| 39 |
+
|
| 40 |
+
EXPOSE 3000
|
| 41 |
+
WORKDIR /data
|
| 42 |
+
|
| 43 |
+
# 使用环境变量指定日志目录
|
| 44 |
+
ENV LOG_DIR=/app/logs
|
| 45 |
+
|
| 46 |
+
# 使用启动脚本作为入口点
|
| 47 |
+
ENTRYPOINT ["/start.sh"]
|
web/docker-compose.yml
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version: '3.4'
|
| 2 |
+
|
| 3 |
+
services:
|
| 4 |
+
new-api:
|
| 5 |
+
image: calciumion/new-api:latest
|
| 6 |
+
container_name: new-api
|
| 7 |
+
restart: always
|
| 8 |
+
command: --log-dir /app/logs
|
| 9 |
+
ports:
|
| 10 |
+
- "3000:3000"
|
| 11 |
+
volumes:
|
| 12 |
+
- ./data:/data
|
| 13 |
+
- ./logs:/app/logs
|
| 14 |
+
environment:
|
| 15 |
+
- SQL_DSN=root:123456@tcp(mysql:3306)/new-api # Point to the mysql service
|
| 16 |
+
- REDIS_CONN_STRING=redis://redis
|
| 17 |
+
- TZ=Asia/Shanghai
|
| 18 |
+
# - SESSION_SECRET=random_string # 多机部署时设置,必须修改这个随机字符串!!!!!!!
|
| 19 |
+
# - NODE_TYPE=slave # Uncomment for slave node in multi-node deployment
|
| 20 |
+
# - SYNC_FREQUENCY=60 # Uncomment if regular database syncing is needed
|
| 21 |
+
# - FRONTEND_BASE_URL=https://openai.justsong.cn # Uncomment for multi-node deployment with front-end URL
|
| 22 |
+
|
| 23 |
+
depends_on:
|
| 24 |
+
- redis
|
| 25 |
+
- mysql
|
| 26 |
+
healthcheck:
|
| 27 |
+
test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $$2}'"]
|
| 28 |
+
interval: 30s
|
| 29 |
+
timeout: 10s
|
| 30 |
+
retries: 3
|
| 31 |
+
|
| 32 |
+
redis:
|
| 33 |
+
image: redis:latest
|
| 34 |
+
container_name: redis
|
| 35 |
+
restart: always
|
| 36 |
+
|
| 37 |
+
mysql:
|
| 38 |
+
image: mysql:8.2
|
| 39 |
+
container_name: mysql
|
| 40 |
+
restart: always
|
| 41 |
+
environment:
|
| 42 |
+
MYSQL_ROOT_PASSWORD: 123456 # Ensure this matches the password in SQL_DSN
|
| 43 |
+
MYSQL_DATABASE: new-api
|
| 44 |
+
volumes:
|
| 45 |
+
- mysql_data:/var/lib/mysql
|
| 46 |
+
# ports:
|
| 47 |
+
# - "3306:3306" # If you want to access MySQL from outside Docker, uncomment
|
| 48 |
+
|
| 49 |
+
volumes:
|
| 50 |
+
mysql_data:
|
web/start.sh
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# Create log directories with proper permissions
|
| 4 |
+
mkdir -p /data /data/logs /app/logs
|
| 5 |
+
chmod -R 777 /data /app/logs
|
| 6 |
+
|
| 7 |
+
# Set environment variables
|
| 8 |
+
export LOG_DIR=/app/logs
|
| 9 |
+
export TZ=Asia/Shanghai
|
| 10 |
+
export PORT=3000
|
| 11 |
+
|
| 12 |
+
# Start the application
|
| 13 |
+
exec /one-api --log-dir /app/logs
|