suthep 0.1.0-beta.1 → 0.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +167 -69
- package/dist/commands/down.js +179 -0
- package/dist/commands/down.js.map +1 -0
- package/dist/commands/redeploy.js +59 -0
- package/dist/commands/redeploy.js.map +1 -0
- package/dist/commands/up.js +213 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/deployment.js +10 -1
- package/dist/utils/deployment.js.map +1 -1
- package/dist/utils/docker.js +35 -0
- package/dist/utils/docker.js.map +1 -1
- package/dist/utils/nginx.js +10 -0
- package/dist/utils/nginx.js.map +1 -1
- package/docs/README.md +25 -82
- package/docs/english/01-introduction.md +84 -0
- package/docs/english/02-installation.md +200 -0
- package/docs/english/03-quick-start.md +256 -0
- package/docs/english/04-configuration.md +358 -0
- package/docs/english/05-commands.md +363 -0
- package/docs/english/06-examples.md +456 -0
- package/docs/english/07-troubleshooting.md +417 -0
- package/docs/english/08-advanced.md +411 -0
- package/docs/english/README.md +48 -0
- package/docs/thai/01-introduction.md +84 -0
- package/docs/thai/02-installation.md +200 -0
- package/docs/thai/03-quick-start.md +256 -0
- package/docs/thai/04-configuration.md +358 -0
- package/docs/thai/05-commands.md +363 -0
- package/docs/thai/06-examples.md +456 -0
- package/docs/thai/07-troubleshooting.md +417 -0
- package/docs/thai/08-advanced.md +411 -0
- package/docs/thai/README.md +48 -0
- package/example/README.md +282 -53
- package/example/suthep-complete.yml +103 -0
- package/example/suthep-docker-only.yml +71 -0
- package/example/suthep-no-docker.yml +51 -0
- package/example/{muacle.yml → suthep-path-routing.yml} +20 -5
- package/example/suthep.example.yml +89 -0
- package/package.json +1 -1
- package/src/commands/down.ts +240 -0
- package/src/commands/redeploy.ts +78 -0
- package/src/commands/up.ts +271 -0
- package/src/index.ts +53 -0
- package/suthep-0.1.0-beta.1.tgz +0 -0
- package/suthep.example.yml +5 -0
- package/suthep.yml +39 -0
- package/docs/TRANSLATIONS.md +0 -211
- package/docs/en/README.md +0 -76
- package/docs/en/api-reference.md +0 -545
- package/docs/en/architecture.md +0 -369
- package/docs/en/commands.md +0 -273
- package/docs/en/configuration.md +0 -347
- package/docs/en/developer-guide.md +0 -588
- package/docs/en/docker-ports-config.md +0 -333
- package/docs/en/examples.md +0 -537
- package/docs/en/getting-started.md +0 -202
- package/docs/en/port-binding.md +0 -268
- package/docs/en/troubleshooting.md +0 -441
- package/docs/th/README.md +0 -64
- package/docs/th/commands.md +0 -202
- package/docs/th/configuration.md +0 -325
- package/docs/th/getting-started.md +0 -203
- package/example/docker-compose.yml +0 -76
- package/example/docker-ports-example.yml +0 -81
- package/example/port-binding-example.yml +0 -45
- package/example/suthep.yml +0 -46
- package/example/suthep=1.yml +0 -46
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
# คู่มือการตั้งค่า
|
|
2
|
+
|
|
3
|
+
คู่มือนี้ครอบคลุมตัวเลือกการตั้งค่าทั้งหมดที่มีในไฟล์ `suthep.yml` ของ Suthep
|
|
4
|
+
|
|
5
|
+
## โครงสร้างไฟล์การตั้งค่า
|
|
6
|
+
|
|
7
|
+
ไฟล์ `suthep.yml` ใช้รูปแบบ YAML และประกอบด้วยหลายส่วน:
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
project:
|
|
11
|
+
# ข้อมูลโปรเจกต์
|
|
12
|
+
|
|
13
|
+
services:
|
|
14
|
+
# คำจำกัดความบริการ
|
|
15
|
+
|
|
16
|
+
nginx:
|
|
17
|
+
# การตั้งค่า Nginx
|
|
18
|
+
|
|
19
|
+
certbot:
|
|
20
|
+
# การตั้งค่าใบรับรอง SSL
|
|
21
|
+
|
|
22
|
+
deployment:
|
|
23
|
+
# การตั้งค่ากลยุทธ์การ deploy
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## การตั้งค่าโปรเจกต์
|
|
27
|
+
|
|
28
|
+
ส่วน `project` ประกอบด้วยข้อมูลเกี่ยวกับโปรเจกต์ของคุณ:
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
project:
|
|
32
|
+
name: my-app # ชื่อโปรเจกต์
|
|
33
|
+
version: 1.0.0 # เวอร์ชันโปรเจกต์
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### ฟิลด์
|
|
37
|
+
|
|
38
|
+
| ฟิลด์ | จำเป็น | คำอธิบาย |
|
|
39
|
+
|-------|--------|----------|
|
|
40
|
+
| `name` | ใช่ | ตัวระบุเฉพาะสำหรับโปรเจกต์ของคุณ |
|
|
41
|
+
| `version` | ใช่ | เวอร์ชันโปรเจกต์ (สำหรับการติดตาม) |
|
|
42
|
+
|
|
43
|
+
## การตั้งค่าบริการ
|
|
44
|
+
|
|
45
|
+
อาร์เรย์ `services` กำหนดบริการทั้งหมดที่จะ deploy แต่ละบริการสามารถมีการตั้งค่าหลายอย่าง
|
|
46
|
+
|
|
47
|
+
### บริการพื้นฐาน
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
services:
|
|
51
|
+
- name: api
|
|
52
|
+
port: 3000
|
|
53
|
+
domains:
|
|
54
|
+
- api.example.com
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### ฟิลด์บริการ
|
|
58
|
+
|
|
59
|
+
| ฟิลด์ | จำเป็น | ประเภท | คำอธิบาย |
|
|
60
|
+
|-------|--------|--------|----------|
|
|
61
|
+
| `name` | ใช่ | string | ตัวระบุบริการเฉพาะ |
|
|
62
|
+
| `port` | ใช่ | number | หมายเลขพอร์ตที่บริการรัน (host port) |
|
|
63
|
+
| `domains` | ใช่ | array | อาร์เรย์ของชื่อโดเมนสำหรับบริการนี้ |
|
|
64
|
+
| `path` | ไม่ | string | คำนำหน้า URL path (ค่าเริ่มต้น: `/`) |
|
|
65
|
+
| `docker` | ไม่ | object | การตั้งค่า Docker (ดูด้านล่าง) |
|
|
66
|
+
| `healthCheck` | ไม่ | object | การตั้งค่า health check (ดูด้านล่าง) |
|
|
67
|
+
| `environment` | ไม่ | object | ตัวแปรสภาพแวดล้อมเป็นคู่ key-value |
|
|
68
|
+
|
|
69
|
+
### การตั้งค่า Docker
|
|
70
|
+
|
|
71
|
+
ตั้งค่า deployment ของ Docker container:
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
services:
|
|
75
|
+
- name: webapp
|
|
76
|
+
port: 8080
|
|
77
|
+
docker:
|
|
78
|
+
image: nginx:latest # Docker image ที่จะ pull
|
|
79
|
+
container: webapp-container # ชื่อ container
|
|
80
|
+
port: 80 # พอร์ตภายใน container
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### ฟิลด์ Docker
|
|
84
|
+
|
|
85
|
+
| ฟิลด์ | จำเป็น | คำอธิบาย |
|
|
86
|
+
|-------|--------|----------|
|
|
87
|
+
| `image` | ไม่* | Docker image ที่จะ pull และรัน |
|
|
88
|
+
| `container` | ใช่ | ชื่อสำหรับ Docker container |
|
|
89
|
+
| `port` | ใช่ | พอร์ตภายในที่ container ฟัง |
|
|
90
|
+
|
|
91
|
+
\* `image` ไม่บังคับหากเชื่อมต่อกับ container ที่มีอยู่แล้ว
|
|
92
|
+
|
|
93
|
+
#### เชื่อมต่อกับ Container ที่มีอยู่
|
|
94
|
+
|
|
95
|
+
เพื่อเชื่อมต่อกับ container ที่กำลังรันอยู่แล้ว ให้ละเว้นฟิลด์ `image`:
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
services:
|
|
99
|
+
- name: database-proxy
|
|
100
|
+
port: 5432
|
|
101
|
+
docker:
|
|
102
|
+
container: postgres-container
|
|
103
|
+
port: 5432
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### การตั้งค่า Health Check
|
|
107
|
+
|
|
108
|
+
ตั้งค่าการตรวจสอบสุขภาพสำหรับบริการของคุณ:
|
|
109
|
+
|
|
110
|
+
```yaml
|
|
111
|
+
services:
|
|
112
|
+
- name: api
|
|
113
|
+
healthCheck:
|
|
114
|
+
path: /health # Health check endpoint
|
|
115
|
+
interval: 30 # ช่วงเวลาการตรวจสอบเป็นวินาที
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
#### ฟิลด์ Health Check
|
|
119
|
+
|
|
120
|
+
| ฟิลด์ | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|
|
121
|
+
|-------|--------|------------|----------|
|
|
122
|
+
| `path` | ใช่ | - | HTTP endpoint path สำหรับ health checks |
|
|
123
|
+
| `interval` | ไม่ | 30 | เวลาระหว่าง health checks (วินาที) |
|
|
124
|
+
|
|
125
|
+
### ตัวแปรสภาพแวดล้อม
|
|
126
|
+
|
|
127
|
+
ตั้งค่าตัวแปรสภาพแวดล้อมสำหรับบริการของคุณ:
|
|
128
|
+
|
|
129
|
+
```yaml
|
|
130
|
+
services:
|
|
131
|
+
- name: api
|
|
132
|
+
environment:
|
|
133
|
+
NODE_ENV: production
|
|
134
|
+
DATABASE_URL: postgresql://localhost:5432/mydb
|
|
135
|
+
API_KEY: your-api-key
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Path-Based Routing
|
|
139
|
+
|
|
140
|
+
กำหนดเส้นทางบริการต่างๆ บนโดเมนเดียวกันโดยใช้ paths:
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
services:
|
|
144
|
+
# บริการ API บน path /api
|
|
145
|
+
- name: api
|
|
146
|
+
port: 3001
|
|
147
|
+
path: /api
|
|
148
|
+
domains:
|
|
149
|
+
- example.com
|
|
150
|
+
|
|
151
|
+
# บริการ UI บน root path
|
|
152
|
+
- name: ui
|
|
153
|
+
port: 3000
|
|
154
|
+
path: /
|
|
155
|
+
domains:
|
|
156
|
+
- example.com
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## การตั้งค่า Nginx
|
|
160
|
+
|
|
161
|
+
ตั้งค่าการตั้งค่า Nginx:
|
|
162
|
+
|
|
163
|
+
```yaml
|
|
164
|
+
nginx:
|
|
165
|
+
configPath: /etc/nginx/sites-available
|
|
166
|
+
reloadCommand: sudo nginx -t && sudo systemctl reload nginx
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### ฟิลด์ Nginx
|
|
170
|
+
|
|
171
|
+
| ฟิลด์ | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|
|
172
|
+
|-------|--------|------------|----------|
|
|
173
|
+
| `configPath` | ไม่ | `/etc/nginx/sites-available` | Path ที่เก็บ configs ของ Nginx |
|
|
174
|
+
| `reloadCommand` | ไม่ | `sudo nginx -t && sudo systemctl reload nginx` | คำสั่งเพื่อ reload Nginx |
|
|
175
|
+
|
|
176
|
+
## การตั้งค่า Certbot
|
|
177
|
+
|
|
178
|
+
ตั้งค่าการตั้งค่าใบรับรอง SSL:
|
|
179
|
+
|
|
180
|
+
```yaml
|
|
181
|
+
certbot:
|
|
182
|
+
email: admin@example.com # อีเมลสำหรับ Let's Encrypt
|
|
183
|
+
staging: false # ใช้สภาพแวดล้อม staging (สำหรับการทดสอบ)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### ฟิลด์ Certbot
|
|
187
|
+
|
|
188
|
+
| ฟิลด์ | จำเป็น | คำอธิบาย |
|
|
189
|
+
|-------|--------|----------|
|
|
190
|
+
| `email` | ใช่ | ที่อยู่อีเมลสำหรับการแจ้งเตือน Let's Encrypt |
|
|
191
|
+
| `staging` | ไม่ | ใช้สภาพแวดล้อม staging (ค่าเริ่มต้น: `false`) |
|
|
192
|
+
|
|
193
|
+
**หมายเหตุ:** ใช้ `staging: true` สำหรับการทดสอบเพื่อหลีกเลี่ยง rate limits
|
|
194
|
+
|
|
195
|
+
## การตั้งค่า Deployment
|
|
196
|
+
|
|
197
|
+
ตั้งค่ากลยุทธ์การ deploy:
|
|
198
|
+
|
|
199
|
+
```yaml
|
|
200
|
+
deployment:
|
|
201
|
+
strategy: rolling # กลยุทธ์การ deploy
|
|
202
|
+
healthCheckTimeout: 30000 # Health check timeout (ms)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### ฟิลด์ Deployment
|
|
206
|
+
|
|
207
|
+
| ฟิลด์ | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|
|
208
|
+
|-------|--------|------------|----------|
|
|
209
|
+
| `strategy` | ไม่ | `rolling` | กลยุทธ์การ deploy (`rolling` หรือ `blue-green`) |
|
|
210
|
+
| `healthCheckTimeout` | ไม่ | `30000` | เวลาสูงสุดในการรอ health check (มิลลิวินาที) |
|
|
211
|
+
|
|
212
|
+
### กลยุทธ์การ Deploy
|
|
213
|
+
|
|
214
|
+
#### Rolling Deployment
|
|
215
|
+
|
|
216
|
+
แทนที่ containers เก่าด้วยใหม่ทีละน้อย:
|
|
217
|
+
|
|
218
|
+
```yaml
|
|
219
|
+
deployment:
|
|
220
|
+
strategy: rolling
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
#### Blue-Green Deployment
|
|
224
|
+
|
|
225
|
+
สร้าง containers ใหม่, สลับ traffic, จากนั้นลบ containers เก่า:
|
|
226
|
+
|
|
227
|
+
```yaml
|
|
228
|
+
deployment:
|
|
229
|
+
strategy: blue-green
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## ตัวอย่างการตั้งค่าที่สมบูรณ์
|
|
233
|
+
|
|
234
|
+
นี่คือตัวอย่างที่สมบูรณ์พร้อมตัวเลือกทั้งหมด:
|
|
235
|
+
|
|
236
|
+
```yaml
|
|
237
|
+
project:
|
|
238
|
+
name: my-app
|
|
239
|
+
version: 1.0.0
|
|
240
|
+
|
|
241
|
+
services:
|
|
242
|
+
# บริการ API แบบง่าย
|
|
243
|
+
- name: api
|
|
244
|
+
port: 3000
|
|
245
|
+
domains:
|
|
246
|
+
- api.example.com
|
|
247
|
+
healthCheck:
|
|
248
|
+
path: /health
|
|
249
|
+
interval: 30
|
|
250
|
+
environment:
|
|
251
|
+
NODE_ENV: production
|
|
252
|
+
|
|
253
|
+
# Docker webapp
|
|
254
|
+
- name: webapp
|
|
255
|
+
port: 8080
|
|
256
|
+
docker:
|
|
257
|
+
image: nginx:latest
|
|
258
|
+
container: webapp-container
|
|
259
|
+
port: 80
|
|
260
|
+
domains:
|
|
261
|
+
- example.com
|
|
262
|
+
- www.example.com
|
|
263
|
+
healthCheck:
|
|
264
|
+
path: /
|
|
265
|
+
interval: 30
|
|
266
|
+
|
|
267
|
+
# หลายบริการบนโดเมนเดียวกัน
|
|
268
|
+
- name: api-v2
|
|
269
|
+
port: 3001
|
|
270
|
+
path: /api
|
|
271
|
+
domains:
|
|
272
|
+
- example.com
|
|
273
|
+
docker:
|
|
274
|
+
image: myapp/api:latest
|
|
275
|
+
container: api-v2-container
|
|
276
|
+
port: 3001
|
|
277
|
+
|
|
278
|
+
nginx:
|
|
279
|
+
configPath: /etc/nginx/sites-available
|
|
280
|
+
reloadCommand: sudo nginx -t && sudo systemctl reload nginx
|
|
281
|
+
|
|
282
|
+
certbot:
|
|
283
|
+
email: admin@example.com
|
|
284
|
+
staging: false
|
|
285
|
+
|
|
286
|
+
deployment:
|
|
287
|
+
strategy: rolling
|
|
288
|
+
healthCheckTimeout: 30000
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## วิธีปฏิบัติที่ดีในการตั้งค่า
|
|
292
|
+
|
|
293
|
+
### 1. ใช้ชื่อบริการที่อธิบายได้
|
|
294
|
+
|
|
295
|
+
```yaml
|
|
296
|
+
# ดี
|
|
297
|
+
- name: user-api
|
|
298
|
+
- name: payment-service
|
|
299
|
+
|
|
300
|
+
# หลีกเลี่ยง
|
|
301
|
+
- name: service1
|
|
302
|
+
- name: app
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### 2. ตั้งค่าช่วงเวลา Health Check ที่เหมาะสม
|
|
306
|
+
|
|
307
|
+
```yaml
|
|
308
|
+
# สำหรับบริการที่สำคัญ
|
|
309
|
+
healthCheck:
|
|
310
|
+
interval: 15 # ตรวจสอบทุก 15 วินาที
|
|
311
|
+
|
|
312
|
+
# สำหรับบริการที่สำคัญน้อยกว่า
|
|
313
|
+
healthCheck:
|
|
314
|
+
interval: 60 # ตรวจสอบทุกนาที
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
### 3. ใช้ Staging สำหรับการทดสอบ
|
|
318
|
+
|
|
319
|
+
```yaml
|
|
320
|
+
certbot:
|
|
321
|
+
staging: true # ใช้ staging สำหรับการทดสอบ
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### 4. จัดระเบียบบริการตามโดเมน
|
|
325
|
+
|
|
326
|
+
จัดกลุ่มบริการที่เกี่ยวข้องกันในการตั้งค่าของคุณ:
|
|
327
|
+
|
|
328
|
+
```yaml
|
|
329
|
+
services:
|
|
330
|
+
# บริการ API
|
|
331
|
+
- name: api
|
|
332
|
+
domains: [api.example.com]
|
|
333
|
+
- name: api-v2
|
|
334
|
+
domains: [api-v2.example.com]
|
|
335
|
+
|
|
336
|
+
# บริการเว็บ
|
|
337
|
+
- name: webapp
|
|
338
|
+
domains: [example.com, www.example.com]
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## การตรวจสอบความถูกต้อง
|
|
342
|
+
|
|
343
|
+
Suthep ตรวจสอบความถูกต้องของการตั้งค่าของคุณก่อน deploy ข้อผิดพลาดการตรวจสอบที่พบบ่อย:
|
|
344
|
+
|
|
345
|
+
- **ฟิลด์ที่จำเป็นหายไป** - ตรวจสอบว่าฟิลด์ที่จำเป็นทั้งหมดมีอยู่
|
|
346
|
+
- **หมายเลขพอร์ตไม่ถูกต้อง** - พอร์ตต้องอยู่ระหว่าง 1 และ 65535
|
|
347
|
+
- **ชื่อบริการซ้ำ** - แต่ละบริการต้องมีชื่อเฉพาะ
|
|
348
|
+
- **รูปแบบโดเมนไม่ถูกต้อง** - โดเมนต้องเป็น hostname ที่ถูกต้อง
|
|
349
|
+
|
|
350
|
+
## ขั้นตอนถัดไป
|
|
351
|
+
|
|
352
|
+
- [คำสั่งอ้างอิง](./05-commands.md) - เรียนรู้เกี่ยวกับคำสั่งทั้งหมดที่มี
|
|
353
|
+
- [ตัวอย่าง](./06-examples.md) - ดูตัวอย่างการตั้งค่าในโลกจริง
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
**ก่อนหน้า:** [เริ่มต้นใช้งาน](./03-quick-start.md) | **ถัดไป:** [คำสั่งอ้างอิง →](./05-commands.md)
|
|
358
|
+
|