-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHowToBuild.txt
More file actions
109 lines (85 loc) · 3.31 KB
/
HowToBuild.txt
File metadata and controls
109 lines (85 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# 进入服务器
ssh root@47.115.57.138
#重新 build 镜像
cd C:\Users\joengzaang\myfiles\server\fastapi
docker build -t myapp:latest .
docker build -t dialects:latest .
#保存成 tar 包
docker save myapp:latest -o myapp.tar
# 上传到服务器
scp myapp.tar root@47.115.57.138:/srv/
# 文件位于服务器的src目录
ls -lah --full-time /srv/ # 人类可读大小 + 秒级时间(默认是 mtime)
# 在服务器加载镜像
docker load -i /srv/myapp.tar
# 先删旧容器
docker rm -f myapp
# 运行容器(把宿主机 /srv/myapp/data 挂到容器 /app/data)
docker run -d --name myapp -p 80:5000 \
-v /srv/myapp/data:/app/data \
-v /srv/myapp/logs:/app/logs \
myapp:latest
# 用ngix(推荐:添加了 statics volume 挂载)
docker run -d --name myapp \
--network host \
-e FORWARDED_ALLOW_IPS="*" \
-v /srv/myapp/data:/app/data \
-v /srv/myapp/logs:/app/logs \
-v /srv/myapp/statics:/app/app/statics \
--memory="1.5g" \
--memory-reservation="1g" \
--cpus="1.5" \
--oom-kill-disable=false \
myapp:latest
#如果是本地先测试
docker run -d --name myapp -p 8080:5000 `
-v "C:\Users\joengzaang\myfiles\server\fastapi\data:/app/data" `
myapp:latest
# 查看状态/日志
docker ps
docker logs -f myapp
# 传data
scp C:\Users\joengzaang\myfiles\server\fastapi\data.tar.gz root@47.115.57.138:/srv/myapp/
# 先解压到临时目录,再人工检查
mkdir -p /srv/myapp/tmp
tar -xvzf /srv/myapp/data.tar.gz -C /srv/myapp/tmp
ls -lah /srv/myapp/tmp
# 确认没问题后,再替换
rm -rf /srv/myapp/data
mv /srv/myapp/tmp/data /srv/myapp/data
scp api_keywords_log.txt root@47.115.57.138:/srv/myapp/logs
scp api_usage_stats.txt root@47.115.57.138:/srv/myapp/logs
scp dialects_user.db root@47.115.57.138:/srv/myapp/data
scp dialects_admin.db root@47.115.57.138:/srv/myapp/data
scp query_user.db root@47.115.57.138:/srv/myapp/data
scp query_admin.db root@47.115.57.138:/srv/myapp/data
scp characters.db root@47.115.57.138:/srv/myapp/data
scp semantic_lexicon_v4_hybrid.json root@47.115.57.138:/srv/myapp/data
scp villages.db root@47.115.57.138:/srv/myapp/data
scp yc_spoken.db root@47.115.57.138:/srv/myapp/data
scp logs.db root@47.115.57.138:/srv/myapp/data
cloc app common --by-file --not-match-d='app/statics'
cloc src auth menu intro public --include-ext=vue,js,css,html --by-file
# ========================================
# 静态文件部署(首次部署或大量更新时)
# ========================================
# 1. 本地打包静态文件
cd C:\Users\joengzaang\myfiles\server\fastapi
tar -czf statics.tar.gz -C app statics
# 2. 上传到服务器
scp statics.tar.gz root@47.115.57.138:/srv/myapp/
# 3. 在服务器上解压
ssh root@47.115.57.138
cd /srv/myapp
tar -xzf statics.tar.gz
ls -la statics/ # 验证文件
# ========================================
# 静态文件更新(日常前端更新)
# ========================================
# 方式 A:上传单个文件
scp app/statics/index.html root@47.115.57.138:/srv/myapp/statics/
scp app/statics/assets/main.*.js root@47.115.57.138:/srv/myapp/statics/assets/
# 方式 B:批量上传整个目录
scp -r app/statics/* root@47.115.57.138:/srv/myapp/statics/
# 注意:更新静态文件后无需重启容器,FastAPI 会实时读取新文件
# Worker 自动重启时不会覆盖外部目录的文件(Docker volume 机制保证)