suthep 0.1.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/.editorconfig +17 -0
- package/.prettierignore +6 -0
- package/.prettierrc +7 -0
- package/.vscode/settings.json +19 -0
- package/LICENSE +21 -0
- package/README.md +217 -0
- package/dist/commands/deploy.js +318 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/init.js +188 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/setup.js +90 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/certbot.js +64 -0
- package/dist/utils/certbot.js.map +1 -0
- package/dist/utils/config-loader.js +95 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/deployment.js +76 -0
- package/dist/utils/deployment.js.map +1 -0
- package/dist/utils/docker.js +393 -0
- package/dist/utils/docker.js.map +1 -0
- package/dist/utils/nginx.js +303 -0
- package/dist/utils/nginx.js.map +1 -0
- package/docs/README.md +95 -0
- package/docs/TRANSLATIONS.md +211 -0
- package/docs/en/README.md +76 -0
- package/docs/en/api-reference.md +545 -0
- package/docs/en/architecture.md +369 -0
- package/docs/en/commands.md +273 -0
- package/docs/en/configuration.md +347 -0
- package/docs/en/developer-guide.md +588 -0
- package/docs/en/docker-ports-config.md +333 -0
- package/docs/en/examples.md +537 -0
- package/docs/en/getting-started.md +202 -0
- package/docs/en/port-binding.md +268 -0
- package/docs/en/troubleshooting.md +441 -0
- package/docs/th/README.md +64 -0
- package/docs/th/commands.md +202 -0
- package/docs/th/configuration.md +325 -0
- package/docs/th/getting-started.md +203 -0
- package/example/README.md +85 -0
- package/example/docker-compose.yml +76 -0
- package/example/docker-ports-example.yml +81 -0
- package/example/muacle.yml +47 -0
- package/example/port-binding-example.yml +45 -0
- package/example/suthep.yml +46 -0
- package/example/suthep=1.yml +46 -0
- package/package.json +45 -0
- package/src/commands/deploy.ts +405 -0
- package/src/commands/init.ts +214 -0
- package/src/commands/setup.ts +112 -0
- package/src/index.ts +42 -0
- package/src/types/config.ts +52 -0
- package/src/utils/certbot.ts +144 -0
- package/src/utils/config-loader.ts +121 -0
- package/src/utils/deployment.ts +157 -0
- package/src/utils/docker.ts +755 -0
- package/src/utils/nginx.ts +326 -0
- package/suthep-0.1.1.tgz +0 -0
- package/suthep.example.yml +98 -0
- package/test +0 -0
- package/todo.md +6 -0
- package/tsconfig.json +26 -0
- package/vite.config.ts +46 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# เอกสารประกอบ Suthep
|
|
2
|
+
|
|
3
|
+
ยินดีต้อนรับสู่เอกสารประกอบ Suthep! คู่มือนี้จะช่วยให้คุณเข้าใจและใช้งาน Suthep ซึ่งเป็นเครื่องมือ CLI ที่ทรงพลังสำหรับการ deploy โปรเจกต์พร้อมการตั้งค่า Nginx reverse proxy อัตโนมัติ, HTTPS ด้วย Certbot, และการ deploy แบบ zero-downtime
|
|
4
|
+
|
|
5
|
+
## สารบัญ
|
|
6
|
+
|
|
7
|
+
### เอกสารสำหรับผู้ใช้
|
|
8
|
+
|
|
9
|
+
1. [เริ่มต้นใช้งาน](./getting-started.md) - คู่มือการติดตั้งและเริ่มต้นใช้งาน
|
|
10
|
+
2. [คู่มือการตั้งค่า](./configuration.md) - คู่มืออ้างอิงไฟล์ configuration ฉบับสมบูรณ์
|
|
11
|
+
3. [คู่มือคำสั่ง](./commands.md) - เอกสารคำสั่งแบบละเอียด
|
|
12
|
+
|
|
13
|
+
### เอกสารสำหรับนักพัฒนา
|
|
14
|
+
|
|
15
|
+
4. [คู่มือนักพัฒนา](../en/developer-guide.md) - คู่มือฉบับสมบูรณ์สำหรับนักพัฒนาและผู้มีส่วนร่วม *(English)*
|
|
16
|
+
5. [สถาปัตยกรรม](../en/architecture.md) - วิธีการทำงานของ Suthep *(English)*
|
|
17
|
+
6. [อ้างอิง API](../en/api-reference.md) - ฟังก์ชันและ utilities ภายใน *(English)*
|
|
18
|
+
|
|
19
|
+
## Suthep คืออะไร?
|
|
20
|
+
|
|
21
|
+
Suthep เป็นเครื่องมืออัตโนมัติสำหรับการ deploy ที่ทำให้กระบวนการ deploy web services ง่ายขึ้นด้วย:
|
|
22
|
+
|
|
23
|
+
- ✅ **การตั้งค่า Nginx reverse proxy อัตโนมัติ** - ไม่ต้องตั้งค่า Nginx ด้วยตนเอง
|
|
24
|
+
- ✅ **HTTPS อัตโนมัติด้วย Certbot** - ใบรับรอง SSL ฟรีจาก Let's Encrypt
|
|
25
|
+
- ✅ **การ deploy แบบ zero-downtime** - กลยุทธ์การ deploy แบบ Rolling และ Blue-Green
|
|
26
|
+
- ✅ **รองรับ Docker container** - Deploy แอปพลิเคชันที่ใช้ container ได้ง่าย
|
|
27
|
+
- ✅ **รองรับหลาย domain/subdomain** - หนึ่ง service, หลาย domains
|
|
28
|
+
- ✅ **Health check** - ตรวจสอบว่า services ทำงานปกติก่อนเปิดใช้งาน
|
|
29
|
+
- ✅ **การตั้งค่าแบบ YAML** - การตั้งค่าที่เรียบง่ายและชัดเจน
|
|
30
|
+
|
|
31
|
+
## เริ่มต้นใช้งานอย่างรวดเร็ว
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# ติดตั้ง dependencies
|
|
35
|
+
npm install
|
|
36
|
+
npm link
|
|
37
|
+
|
|
38
|
+
# เริ่มต้นการตั้งค่า
|
|
39
|
+
suthep init
|
|
40
|
+
|
|
41
|
+
# ติดตั้ง prerequisites
|
|
42
|
+
suthep setup
|
|
43
|
+
|
|
44
|
+
# Deploy services ของคุณ
|
|
45
|
+
suthep deploy
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## ความต้องการของระบบ
|
|
49
|
+
|
|
50
|
+
- Node.js 16+
|
|
51
|
+
- Nginx (ติดตั้งผ่าน `suthep setup`)
|
|
52
|
+
- Certbot (ติดตั้งผ่าน `suthep setup`)
|
|
53
|
+
- Docker (ไม่บังคับ, สำหรับ services ที่ใช้ Docker)
|
|
54
|
+
- สิทธิ์ sudo (สำหรับการทำงานของ Nginx และ Certbot)
|
|
55
|
+
|
|
56
|
+
## ภาษาอื่นๆ / Other Languages
|
|
57
|
+
|
|
58
|
+
- [English](../en/README.md) - English documentation / เอกสารภาษาอังกฤษ
|
|
59
|
+
- [ไทย](./README.md) - เอกสารภาษาไทย (ปัจจุบัน)
|
|
60
|
+
- [กลับไปหน้าหลัก](../README.md) - Return to language selection
|
|
61
|
+
|
|
62
|
+
## สิทธิ์การใช้งาน
|
|
63
|
+
|
|
64
|
+
[MIT](../../LICENSE)
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# คู่มืออ้างอิงคำสั่ง
|
|
2
|
+
|
|
3
|
+
Suthep มีคำสั่งหลักสามคำสั่งสำหรับการจัดการ deployments เอกสารนี้อธิบายแต่ละคำสั่งแบบละเอียด
|
|
4
|
+
|
|
5
|
+
## `suthep init`
|
|
6
|
+
|
|
7
|
+
เริ่มต้นไฟล์ configuration สำหรับการ deploy ใหม่
|
|
8
|
+
|
|
9
|
+
### การใช้งาน
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
suthep init [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### ตัวเลือก
|
|
16
|
+
|
|
17
|
+
| ตัวเลือก | ตัวย่อ | คำอธิบาย | ค่าเริ่มต้น |
|
|
18
|
+
|---------|--------|----------|-----------|
|
|
19
|
+
| `--file` | `-f` | Path ของไฟล์ configuration | `suthep.yml` |
|
|
20
|
+
|
|
21
|
+
### คำอธิบาย
|
|
22
|
+
|
|
23
|
+
คำสั่ง `init` จะสร้างไฟล์ configuration `suthep.yml` แบบ interactive โดยจะ:
|
|
24
|
+
|
|
25
|
+
1. ถามชื่อโปรเจกต์และเวอร์ชัน
|
|
26
|
+
2. แนะนำการตั้งค่า services หนึ่งหรือหลายตัว
|
|
27
|
+
3. ถามเกี่ยวกับการตั้งค่า Docker สำหรับแต่ละ service
|
|
28
|
+
4. ตั้งค่า health check endpoints
|
|
29
|
+
5. ตั้งค่าอีเมล Certbot และโหมด staging
|
|
30
|
+
6. บันทึก configuration ไปยังไฟล์ที่ระบุ
|
|
31
|
+
|
|
32
|
+
### ตัวอย่าง
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# สร้าง suthep.yml เริ่มต้น
|
|
36
|
+
suthep init
|
|
37
|
+
|
|
38
|
+
# สร้างไฟล์ configuration แบบกำหนดเอง
|
|
39
|
+
suthep init -f production.yml
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### คำถามแบบ Interactive
|
|
43
|
+
|
|
44
|
+
คำสั่งจะถามคุณ:
|
|
45
|
+
|
|
46
|
+
1. **Project name**: ชื่อโปรเจกต์ของคุณ
|
|
47
|
+
2. **Project version**: หมายเลขเวอร์ชัน
|
|
48
|
+
3. **Service name**: ตัวระบุเฉพาะสำหรับ service
|
|
49
|
+
4. **Service port**: พอร์ตที่ service รัน (1-65535)
|
|
50
|
+
5. **Domain names**: รายการ domains แยกด้วยเครื่องหมายจุลภาค
|
|
51
|
+
6. **Use Docker?**: ต้องการใช้ Docker หรือไม่
|
|
52
|
+
7. **Docker image**: Image ที่จะใช้ (ไม่บังคับ, สำหรับ containers ใหม่)
|
|
53
|
+
8. **Container name**: ชื่อ Docker container
|
|
54
|
+
9. **Container port**: พอร์ตภายใน container
|
|
55
|
+
10. **Add health check?**: ต้องการตั้งค่า health checks หรือไม่
|
|
56
|
+
11. **Health check path**: HTTP path สำหรับ health endpoint
|
|
57
|
+
12. **Health check interval**: ช่วงเวลาการตรวจสอบ (วินาที)
|
|
58
|
+
13. **Add another service?**: ต้องการตั้งค่า services เพิ่มเติมหรือไม่
|
|
59
|
+
14. **Email for SSL certificates**: อีเมลสำหรับ Let's Encrypt
|
|
60
|
+
15. **Use Certbot staging?**: ใช้ staging environment สำหรับการทดสอบ
|
|
61
|
+
|
|
62
|
+
## `suthep setup`
|
|
63
|
+
|
|
64
|
+
ตั้งค่า Nginx และ Certbot บนระบบ
|
|
65
|
+
|
|
66
|
+
### การใช้งาน
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
suthep setup [options]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### ตัวเลือก
|
|
73
|
+
|
|
74
|
+
| ตัวเลือก | คำอธิบาย |
|
|
75
|
+
|---------|----------|
|
|
76
|
+
| `--nginx-only` | ตั้งค่าเฉพาะ Nginx (ข้าม Certbot) |
|
|
77
|
+
| `--certbot-only` | ตั้งค่าเฉพาะ Certbot (ข้าม Nginx) |
|
|
78
|
+
|
|
79
|
+
### คำอธิบาย
|
|
80
|
+
|
|
81
|
+
คำสั่ง `setup` จะติดตั้งและตั้งค่า prerequisites สำหรับ Suthep:
|
|
82
|
+
|
|
83
|
+
1. **การติดตั้ง Nginx**:
|
|
84
|
+
- ตรวจสอบว่า Nginx ติดตั้งแล้วหรือยัง
|
|
85
|
+
- ติดตั้ง Nginx โดยใช้ package manager ที่เหมาะสม:
|
|
86
|
+
- `apt-get` บน Debian/Ubuntu
|
|
87
|
+
- `yum` บน RHEL/CentOS
|
|
88
|
+
- `brew` บน macOS
|
|
89
|
+
- เริ่มและเปิดใช้งาน Nginx service
|
|
90
|
+
|
|
91
|
+
2. **การติดตั้ง Certbot**:
|
|
92
|
+
- ตรวจสอบว่า Certbot ติดตั้งแล้วหรือยัง
|
|
93
|
+
- ติดตั้ง Certbot และ Nginx plugin:
|
|
94
|
+
- `certbot` และ `python3-certbot-nginx` บน Linux
|
|
95
|
+
- `certbot` บน macOS ผ่าน Homebrew
|
|
96
|
+
|
|
97
|
+
### ตัวอย่าง
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# ตั้งค่าทั้ง Nginx และ Certbot
|
|
101
|
+
suthep setup
|
|
102
|
+
|
|
103
|
+
# ตั้งค่าเฉพาะ Nginx
|
|
104
|
+
suthep setup --nginx-only
|
|
105
|
+
|
|
106
|
+
# ตั้งค่าเฉพาะ Certbot
|
|
107
|
+
suthep setup --certbot-only
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## `suthep deploy`
|
|
111
|
+
|
|
112
|
+
Deploy services ตาม configuration ที่กำหนด
|
|
113
|
+
|
|
114
|
+
### การใช้งาน
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
suthep deploy [options]
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### ตัวเลือก
|
|
121
|
+
|
|
122
|
+
| ตัวเลือก | ตัวย่อ | คำอธิบาย | ค่าเริ่มต้น |
|
|
123
|
+
|---------|--------|----------|-----------|
|
|
124
|
+
| `--file` | `-f` | Path ของไฟล์ configuration | `suthep.yml` |
|
|
125
|
+
| `--nginx` | | เปิดใช้งานการตั้งค่า Nginx | `true` |
|
|
126
|
+
| `--no-nginx` | | ปิดการใช้งานการตั้งค่า Nginx | |
|
|
127
|
+
| `--https` | | เปิดใช้งาน HTTPS และขอใบรับรอง SSL | `false` |
|
|
128
|
+
| `--no-https` | | ปิดการใช้งาน HTTPS | |
|
|
129
|
+
|
|
130
|
+
### คำอธิบาย
|
|
131
|
+
|
|
132
|
+
คำสั่ง `deploy` จะ deploy services ทั้งหมดตาม configuration:
|
|
133
|
+
|
|
134
|
+
1. **โหลด Configuration**: โหลดและตรวจสอบไฟล์ `suthep.yml`
|
|
135
|
+
2. **จัดการ Docker Containers**:
|
|
136
|
+
- ตรวจสอบว่า container มีอยู่หรือไม่
|
|
137
|
+
- ลบและสร้างใหม่ถ้าจำเป็น (สำหรับการ redeploy)
|
|
138
|
+
- Pull image ล่าสุด
|
|
139
|
+
- สร้างและเริ่ม container
|
|
140
|
+
3. **Deploy Services**: ใช้กลยุทธ์การ deploy ที่กำหนด
|
|
141
|
+
4. **Health Checks**: ตรวจสอบว่า services ทำงานปกติ
|
|
142
|
+
5. **สร้าง Nginx Configs**: สร้างไฟล์ configuration สำหรับแต่ละ domain
|
|
143
|
+
6. **เปิดใช้งาน Sites**: สร้าง symbolic links ใน `sites-enabled`
|
|
144
|
+
7. **ขอใบรับรอง SSL**: ขอใบรับรองจาก Let's Encrypt (ถ้าเปิดใช้งาน HTTPS)
|
|
145
|
+
8. **Reload Nginx**: ทดสอบและ reload Nginx configuration
|
|
146
|
+
|
|
147
|
+
### ตัวอย่าง
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Deploy พร้อม Nginx (ไม่มี HTTPS)
|
|
151
|
+
suthep deploy
|
|
152
|
+
|
|
153
|
+
# Deploy พร้อม HTTPS
|
|
154
|
+
suthep deploy --https
|
|
155
|
+
|
|
156
|
+
# Deploy โดยไม่ใช้ Nginx
|
|
157
|
+
suthep deploy --no-nginx
|
|
158
|
+
|
|
159
|
+
# Deploy โดยใช้ไฟล์ configuration แบบกำหนดเอง
|
|
160
|
+
suthep deploy -f production.yml --https
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### กระบวนการ Deploy
|
|
164
|
+
|
|
165
|
+
คำสั่ง `deploy` จะ:
|
|
166
|
+
|
|
167
|
+
1. **Group Services by Domain**: จัดกลุ่ม services ตาม domain
|
|
168
|
+
2. **Deploy Each Service**:
|
|
169
|
+
- เริ่ม Docker container (ถ้าตั้งค่าไว้)
|
|
170
|
+
- Deploy service
|
|
171
|
+
- ทำ health check
|
|
172
|
+
3. **Configure Nginx**:
|
|
173
|
+
- สร้าง configuration สำหรับแต่ละ domain
|
|
174
|
+
- Services หลายตัวบน domain เดียวจะใช้ไฟล์ config เดียวกัน
|
|
175
|
+
- เปิดใช้งาน site
|
|
176
|
+
4. **Setup HTTPS** (ถ้าเปิดใช้งาน):
|
|
177
|
+
- ตรวจสอบว่าใบรับรองมีอยู่แล้วหรือไม่
|
|
178
|
+
- ขอใบรับรองใหม่ถ้ายังไม่มี
|
|
179
|
+
- อัปเดต Nginx configs ด้วย HTTPS
|
|
180
|
+
5. **Reload Nginx**: ทดสอบและ reload configuration
|
|
181
|
+
|
|
182
|
+
### ข้อความแสดงผล
|
|
183
|
+
|
|
184
|
+
คำสั่งจะแสดง:
|
|
185
|
+
|
|
186
|
+
- ✅ สีเขียว: การดำเนินการสำเร็จ
|
|
187
|
+
- 🔄 สีเหลือง: การดำเนินการที่กำลังทำ
|
|
188
|
+
- ❌ สีแดง: ข้อผิดพลาด
|
|
189
|
+
- 📋 สีฟ้า: ข้อมูล
|
|
190
|
+
|
|
191
|
+
### ข้อผิดพลาดที่พบบ่อย
|
|
192
|
+
|
|
193
|
+
- **Port already in use**: พอร์ตถูกใช้งานโดย container อื่น
|
|
194
|
+
- **Container name already in use**: ชื่อ container ถูกใช้งานแล้ว
|
|
195
|
+
- **SSL certificate failed**: ไม่สามารถขอใบรับรอง SSL ได้
|
|
196
|
+
- **Nginx config test failed**: การตั้งค่า Nginx ไม่ถูกต้อง
|
|
197
|
+
|
|
198
|
+
## ภาษาอื่นๆ / Other Languages
|
|
199
|
+
|
|
200
|
+
- [English](../en/commands.md) - English version / เวอร์ชันภาษาอังกฤษ
|
|
201
|
+
- [ไทย](./commands.md) - เวอร์ชันภาษาไทย (ปัจจุบัน)
|
|
202
|
+
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# คู่มืออ้างอิงการตั้งค่า
|
|
2
|
+
|
|
3
|
+
Suthep ใช้ไฟล์ configuration แบบ YAML (ค่าเริ่มต้น: `suthep.yml`) เพื่อกำหนดการ deploy ของคุณ เอกสารนี้อธิบายตัวเลือกการตั้งค่าทั้งหมดที่มีให้
|
|
4
|
+
|
|
5
|
+
## โครงสร้างไฟล์ Configuration
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
project:
|
|
9
|
+
name: string
|
|
10
|
+
version: string
|
|
11
|
+
|
|
12
|
+
services:
|
|
13
|
+
- name: string
|
|
14
|
+
port: number
|
|
15
|
+
domains: string[]
|
|
16
|
+
docker?: DockerConfig
|
|
17
|
+
healthCheck?: HealthCheckConfig
|
|
18
|
+
environment?: Record<string, string>
|
|
19
|
+
|
|
20
|
+
nginx:
|
|
21
|
+
configPath: string
|
|
22
|
+
reloadCommand: string
|
|
23
|
+
|
|
24
|
+
certbot:
|
|
25
|
+
email: string
|
|
26
|
+
staging: boolean
|
|
27
|
+
|
|
28
|
+
deployment:
|
|
29
|
+
strategy: 'rolling' | 'blue-green'
|
|
30
|
+
healthCheckTimeout: number
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## การตั้งค่าโปรเจกต์
|
|
34
|
+
|
|
35
|
+
### `project.name`
|
|
36
|
+
|
|
37
|
+
- **ประเภท**: `string`
|
|
38
|
+
- **จำเป็น**: ใช่
|
|
39
|
+
- **คำอธิบาย**: ชื่อโปรเจกต์ของคุณ
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
project:
|
|
43
|
+
name: my-awesome-app
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### `project.version`
|
|
47
|
+
|
|
48
|
+
- **ประเภท**: `string`
|
|
49
|
+
- **จำเป็น**: ใช่
|
|
50
|
+
- **คำอธิบาย**: เวอร์ชันของโปรเจกต์ของคุณ
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
project:
|
|
54
|
+
version: 1.0.0
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## การตั้งค่า Service
|
|
58
|
+
|
|
59
|
+
แต่ละ service แทนแอปพลิเคชันหรือ service ที่จะถูก deploy และเปิดเผยผ่าน Nginx
|
|
60
|
+
|
|
61
|
+
### `services[].name`
|
|
62
|
+
|
|
63
|
+
- **ประเภท**: `string`
|
|
64
|
+
- **จำเป็น**: ใช่
|
|
65
|
+
- **คำอธิบาย**: ชื่อเฉพาะสำหรับ service ใช้สำหรับไฟล์ configuration ของ Nginx และ Docker containers
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
services:
|
|
69
|
+
- name: api
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `services[].port`
|
|
73
|
+
|
|
74
|
+
- **ประเภท**: `number`
|
|
75
|
+
- **จำเป็น**: ใช่
|
|
76
|
+
- **คำอธิบาย**: หมายเลขพอร์ตที่ service กำลังฟัง (1-65535)
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
services:
|
|
80
|
+
- name: api
|
|
81
|
+
port: 3000
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### `services[].domains`
|
|
85
|
+
|
|
86
|
+
- **ประเภท**: `string[]`
|
|
87
|
+
- **จำเป็น**: ใช่
|
|
88
|
+
- **คำอธิบาย**: รายการ domain names ที่ service นี้จะถูกเข้าถึง
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
services:
|
|
92
|
+
- name: api
|
|
93
|
+
domains:
|
|
94
|
+
- api.example.com
|
|
95
|
+
- www.api.example.com
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### `services[].path`
|
|
99
|
+
|
|
100
|
+
- **ประเภท**: `string`
|
|
101
|
+
- **จำเป็น**: ไม่
|
|
102
|
+
- **ค่าเริ่มต้น**: `/`
|
|
103
|
+
- **คำอธิบาย**: Path prefix สำหรับ service นี้ (เช่น '/api', '/'). ใช้สำหรับ routing หลาย services บน domain เดียวกัน
|
|
104
|
+
|
|
105
|
+
```yaml
|
|
106
|
+
services:
|
|
107
|
+
- name: api
|
|
108
|
+
path: /api
|
|
109
|
+
domains:
|
|
110
|
+
- example.com
|
|
111
|
+
- name: ui
|
|
112
|
+
path: /
|
|
113
|
+
domains:
|
|
114
|
+
- example.com
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### `services[].docker`
|
|
118
|
+
|
|
119
|
+
- **ประเภท**: `DockerConfig`
|
|
120
|
+
- **จำเป็น**: ไม่
|
|
121
|
+
- **คำอธิบาย**: การตั้งค่า Docker สำหรับ service นี้
|
|
122
|
+
|
|
123
|
+
```yaml
|
|
124
|
+
services:
|
|
125
|
+
- name: api
|
|
126
|
+
docker:
|
|
127
|
+
image: myapp/api:latest
|
|
128
|
+
container: api-container
|
|
129
|
+
port: 3000
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### `docker.image`
|
|
133
|
+
|
|
134
|
+
- **ประเภท**: `string`
|
|
135
|
+
- **จำเป็น**: ไม่ (จำเป็นถ้าต้องการสร้าง container ใหม่)
|
|
136
|
+
- **คำอธิบาย**: Docker image ที่จะใช้
|
|
137
|
+
|
|
138
|
+
#### `docker.container`
|
|
139
|
+
|
|
140
|
+
- **ประเภท**: `string`
|
|
141
|
+
- **จำเป็น**: ใช่
|
|
142
|
+
- **คำอธิบาย**: ชื่อ container
|
|
143
|
+
|
|
144
|
+
#### `docker.port`
|
|
145
|
+
|
|
146
|
+
- **ประเภท**: `number`
|
|
147
|
+
- **จำเป็น**: ใช่
|
|
148
|
+
- **คำอธิบาย**: พอร์ตภายใน container ที่แอปพลิเคชันฟัง
|
|
149
|
+
|
|
150
|
+
**หมายเหตุ**: `service.port` คือพอร์ตบน host (ที่ Nginx เชื่อมต่อ) และ `docker.port` คือพอร์ตภายใน container
|
|
151
|
+
|
|
152
|
+
### `services[].healthCheck`
|
|
153
|
+
|
|
154
|
+
- **ประเภท**: `HealthCheckConfig`
|
|
155
|
+
- **จำเป็น**: ไม่
|
|
156
|
+
- **คำอธิบาย**: การตั้งค่า health check สำหรับ service
|
|
157
|
+
|
|
158
|
+
```yaml
|
|
159
|
+
services:
|
|
160
|
+
- name: api
|
|
161
|
+
healthCheck:
|
|
162
|
+
path: /health
|
|
163
|
+
interval: 30
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### `healthCheck.path`
|
|
167
|
+
|
|
168
|
+
- **ประเภท**: `string`
|
|
169
|
+
- **จำเป็น**: ใช่
|
|
170
|
+
- **คำอธิบาย**: Path ของ health check endpoint
|
|
171
|
+
|
|
172
|
+
#### `healthCheck.interval`
|
|
173
|
+
|
|
174
|
+
- **ประเภท**: `number`
|
|
175
|
+
- **จำเป็น**: ใช่
|
|
176
|
+
- **คำอธิบาย**: ช่วงเวลาระหว่าง health checks (วินาที)
|
|
177
|
+
|
|
178
|
+
### `services[].environment`
|
|
179
|
+
|
|
180
|
+
- **ประเภท**: `Record<string, string>`
|
|
181
|
+
- **จำเป็น**: ไม่
|
|
182
|
+
- **คำอธิบาย**: ตัวแปรสภาพแวดล้อมที่จะส่งไปยัง Docker container
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
services:
|
|
186
|
+
- name: api
|
|
187
|
+
docker:
|
|
188
|
+
image: myapp/api:latest
|
|
189
|
+
container: api-container
|
|
190
|
+
port: 3000
|
|
191
|
+
environment:
|
|
192
|
+
NODE_ENV: production
|
|
193
|
+
DATABASE_URL: postgresql://localhost:5432/mydb
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## การตั้งค่า Nginx
|
|
197
|
+
|
|
198
|
+
### `nginx.configPath`
|
|
199
|
+
|
|
200
|
+
- **ประเภท**: `string`
|
|
201
|
+
- **จำเป็น**: ใช่
|
|
202
|
+
- **คำอธิบาย**: Path ไปยังไดเรกทอรีที่เก็บไฟล์ configuration ของ Nginx
|
|
203
|
+
|
|
204
|
+
```yaml
|
|
205
|
+
nginx:
|
|
206
|
+
configPath: /etc/nginx/sites-available
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### `nginx.reloadCommand`
|
|
210
|
+
|
|
211
|
+
- **ประเภท**: `string`
|
|
212
|
+
- **จำเป็น**: ใช่
|
|
213
|
+
- **คำอธิบาย**: คำสั่งสำหรับ reload Nginx configuration
|
|
214
|
+
|
|
215
|
+
```yaml
|
|
216
|
+
nginx:
|
|
217
|
+
reloadCommand: sudo nginx -t && sudo systemctl reload nginx
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## การตั้งค่า Certbot
|
|
221
|
+
|
|
222
|
+
### `certbot.email`
|
|
223
|
+
|
|
224
|
+
- **ประเภท**: `string`
|
|
225
|
+
- **จำเป็น**: ใช่
|
|
226
|
+
- **คำอธิบาย**: อีเมลที่ใช้สำหรับการลงทะเบียนกับ Let's Encrypt
|
|
227
|
+
|
|
228
|
+
```yaml
|
|
229
|
+
certbot:
|
|
230
|
+
email: admin@example.com
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### `certbot.staging`
|
|
234
|
+
|
|
235
|
+
- **ประเภท**: `boolean`
|
|
236
|
+
- **จำเป็น**: ใช่
|
|
237
|
+
- **คำอธิบาย**: ใช้ staging environment ของ Let's Encrypt (แนะนำสำหรับการทดสอบ)
|
|
238
|
+
|
|
239
|
+
```yaml
|
|
240
|
+
certbot:
|
|
241
|
+
staging: false
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## การตั้งค่า Deployment
|
|
245
|
+
|
|
246
|
+
### `deployment.strategy`
|
|
247
|
+
|
|
248
|
+
- **ประเภท**: `'rolling' | 'blue-green'`
|
|
249
|
+
- **จำเป็น**: ใช่
|
|
250
|
+
- **คำอธิบาย**: กลยุทธ์การ deploy ที่จะใช้
|
|
251
|
+
|
|
252
|
+
```yaml
|
|
253
|
+
deployment:
|
|
254
|
+
strategy: rolling
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
- **`rolling`**: แทนที่ instances เก่าด้วยใหม่ทีละน้อย
|
|
258
|
+
- **`blue-green`**: รักษาสภาพแวดล้อมสองชุดและสลับระหว่างกัน
|
|
259
|
+
|
|
260
|
+
### `deployment.healthCheckTimeout`
|
|
261
|
+
|
|
262
|
+
- **ประเภท**: `number`
|
|
263
|
+
- **จำเป็น**: ใช่
|
|
264
|
+
- **คำอธิบาย**: เวลาสูงสุดในการรอ health check (มิลลิวินาที)
|
|
265
|
+
|
|
266
|
+
```yaml
|
|
267
|
+
deployment:
|
|
268
|
+
healthCheckTimeout: 30000
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## ตัวอย่างการตั้งค่าที่สมบูรณ์
|
|
272
|
+
|
|
273
|
+
```yaml
|
|
274
|
+
project:
|
|
275
|
+
name: my-awesome-app
|
|
276
|
+
version: 1.0.0
|
|
277
|
+
|
|
278
|
+
services:
|
|
279
|
+
- name: api
|
|
280
|
+
port: 3001
|
|
281
|
+
path: /api
|
|
282
|
+
domains:
|
|
283
|
+
- api.example.com
|
|
284
|
+
docker:
|
|
285
|
+
image: myapp/api:latest
|
|
286
|
+
container: api-container
|
|
287
|
+
port: 3001
|
|
288
|
+
healthCheck:
|
|
289
|
+
path: /health
|
|
290
|
+
interval: 30
|
|
291
|
+
environment:
|
|
292
|
+
NODE_ENV: production
|
|
293
|
+
|
|
294
|
+
- name: ui
|
|
295
|
+
port: 3000
|
|
296
|
+
path: /
|
|
297
|
+
domains:
|
|
298
|
+
- example.com
|
|
299
|
+
- www.example.com
|
|
300
|
+
docker:
|
|
301
|
+
image: myapp/ui:latest
|
|
302
|
+
container: ui-container
|
|
303
|
+
port: 80
|
|
304
|
+
healthCheck:
|
|
305
|
+
path: /
|
|
306
|
+
interval: 30
|
|
307
|
+
|
|
308
|
+
nginx:
|
|
309
|
+
configPath: /etc/nginx/sites-available
|
|
310
|
+
reloadCommand: sudo nginx -t && sudo systemctl reload nginx
|
|
311
|
+
|
|
312
|
+
certbot:
|
|
313
|
+
email: admin@example.com
|
|
314
|
+
staging: false
|
|
315
|
+
|
|
316
|
+
deployment:
|
|
317
|
+
strategy: rolling
|
|
318
|
+
healthCheckTimeout: 30000
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## ภาษาอื่นๆ / Other Languages
|
|
322
|
+
|
|
323
|
+
- [English](../en/configuration.md) - English version / เวอร์ชันภาษาอังกฤษ
|
|
324
|
+
- [ไทย](./configuration.md) - เวอร์ชันภาษาไทย (ปัจจุบัน)
|
|
325
|
+
|