timigogo commited on
Commit
b851d85
·
verified ·
1 Parent(s): 2e68e7f

Upload 3 files

Browse files
Files changed (3) hide show
  1. web/Dockerfile +47 -0
  2. web/docker-compose.yml +50 -0
  3. 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