update content
This commit is contained in:
parent
289e965ba5
commit
b4fa5180b0
1 changed files with 22 additions and 15 deletions
|
|
@ -311,7 +311,7 @@ docker network create [network_name] # สร้างเน็ตเวิร
|
|||
|
||||
# การใช้งานไฟล์ Docker Compose
|
||||
## Docker Compose File คืออะไร?
|
||||
**Docker Compose File** เป็นไฟล์ที่มีรูปแบบเป็น YAML (มักมีชื่อไฟล์ docker-compose.yml) ซึ่งใช้สำหรับการกำหนดค่าและจัดการการทำงานของ **หลายคอนเทนเนอร์** ในโปรเจกต์เดียวกัน ช่วยให้นักพัฒนาสามารถกำหนดบริการต่างๆ ที่คอนเทนเนอร์จะต้องรัน เช่น ฐานข้อมูล เว็บเซิร์ฟเวอร์ และบริการอื่นๆ ได้ในที่เดียว
|
||||
**Docker Compose File** เป็นไฟล์ที่มีรูปแบบเป็น YAML (มักมีชื่อไฟล์ docker-compose.yml หรือ compose.yaml) ซึ่งใช้สำหรับการกำหนดค่าและจัดการการทำงานของ **หลายคอนเทนเนอร์** ในโปรเจกต์เดียวกัน ช่วยให้นักพัฒนาสามารถกำหนดบริการต่างๆ ที่คอนเทนเนอร์จะต้องรัน เช่น ฐานข้อมูล เว็บเซิร์ฟเวอร์ และบริการอื่นๆ ได้ในที่เดียว
|
||||
|
||||
## Docker Compose File มีไว้ทำไม?
|
||||
1. จัดการบริการหลายตัวพร้อมกัน
|
||||
|
|
@ -323,7 +323,7 @@ docker network create [network_name] # สร้างเน็ตเวิร
|
|||
3. กำหนดค่าที่ซับซ้อน
|
||||
สามารถกำหนดค่าเครือข่าย, การเชื่อมโยงคอนเทนเนอร์, พอร์ต, Volume, และ Environment Variable ได้ในไฟล์เดียว
|
||||
|
||||
4. ทำให้การพกพาโปรเจกต์ง่ายขึ้น
|
||||
4. ทำให้การพกพาและย้ายโปรเจกต์ง่ายขึ้น
|
||||
แชร์ docker-compose.yml ไฟล์ให้ผู้อื่นเพื่อสร้างสภาพแวดล้อมที่เหมือนกันได้อย่างง่ายดาย
|
||||
|
||||
## Docker Compose File ใช้งานเพื่ออะไร?
|
||||
|
|
@ -449,7 +449,7 @@ plugin_attr:
|
|||
port: 9091
|
||||
```
|
||||
|
||||
apisix/compose.yaml จะมีสอง service ตัว apisix จะเป็นโปรแกรมหลัก ส่วน etcd ฐานข้อมูลแบบกระจายตัว ใช้สำหรับเก็บการตั้งค่าของ apisix
|
||||
apisix/compose.yaml จะมีสอง service ตัว apisix จะเป็นโปรแกรมหลัก ส่วน etcd ฐานข้อมูลแบบกระจายตัว ใช้สำหรับเก็บการตั้งค่าของ apisix เน็ตเวิร์ก apisix จะเป็นการสื่อสารระหว่างสองเซอร์วิสเท่านั้น ส่วนเน็ตเวิร์ก hrms จะเป็นการสื่อสารระหว่าง apisix กับโปรแกรมต่างๆของระบบ
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
|
@ -534,8 +534,10 @@ curl https://bma-hrms-id.bangkok.go.th -vvv
|
|||
- **Frappet EDM** ใช้สำหรับจัดการเอกสารที่ปลอดภัยรองรับโหลดจำนวนมากได้ จะมีระบบย่อยเบื้องหลังหลายตัว (bmahrms-edm,bmahrms-elasticsearch,bmahrms-kibana,bmahrms-mq)
|
||||
|
||||
docker/bmahrms-service/service.env
|
||||
การตั้งค่าและรหัสผ่านของคอนเทนเนอร์ผ่านตัวแปรแวดล้อม สามารถทำแต่ละ server กำหนดในไฟล์คอมโพส หรือแยกออกมาเป็นไฟล์เพื่อใช้ร่วมกันหลาย Service ก็ได้ ในตัวอย่างนี้จะใช้ ไฟล์ service.env
|
||||
ให้แก้ตัวแปรซึ่งเป็นระหัสผ่านให้เหมาะสม KEYCLOAK_ADMIN_PASSWORD, KC_DB_PASSWORD, POSTGRES_PASSWORD, MINIO_ROOT_PASSWORD RABBITMQ_DEFAULT_PASS, MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD
|
||||
การตั้งค่าและรหัสผ่านของคอนเทนเนอร์ผ่านตัวแปรแวดล้อมทำได้สอบแบบ
|
||||
- ทำแต่ละ services.service_name.environments ในไฟล์คอมโพส
|
||||
- แยกออกมาเป็นไฟล์เพื่อใช้ร่วมกันหลาย Service ก็ได้ ในตัวอย่างนี้จะใช้ ไฟล์ service.env
|
||||
ให้แก้ตัวแปรให้เหมาะสม KEYCLOAK_ADMIN_PASSWORD, KC_DB_PASSWORD, POSTGRES_PASSWORD, MINIO_ROOT_PASSWORD RABBITMQ_DEFAULT_PASS, MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD
|
||||
```
|
||||
# Generic
|
||||
TZ=Asia/Bangkok
|
||||
|
|
@ -582,7 +584,9 @@ REDIS_PORT=6379
|
|||
REDIS_DATABASES=16
|
||||
```
|
||||
|
||||
docker/bmahrms-service/compose.yaml ให้แก้ค่า PUBLIC_KEY MINIO_ACCESS_KEY,MINIO_SECRET_KEY, ipaddress_bma_hrms_id ให้เหมาะสม
|
||||
docker/bmahrms-service/compose.yaml จะใช้ docker volume (keycloak_data, minio_data ฯลฯ) แทน file system (ตัวอย่างก่อนหน้า) เพื่อประสิทธิ์ภาพสูงกว่าในการเก็บขอมูลที่มีการเขียนอ่านบ่อย
|
||||
|
||||
ให้แก้ค่า PUBLIC_KEY MINIO_ACCESS_KEY,MINIO_SECRET_KEY, ipaddress_bma_hrms_id ให้เหมาะสม
|
||||
|
||||
```yaml
|
||||
networks:
|
||||
|
|
@ -737,7 +741,7 @@ services:
|
|||
- hrms
|
||||
```
|
||||
|
||||
รันคำสั่งดังนี้ในตัวอย่างเรียกใช้งาน Keycloak จะใช้ 2 service ตัวอย่างนี้จะเรียกใช้ฐานข้อมูลแล้วค่อยเรียกใช้โปรแกรม keycloak
|
||||
รันคำสั่งดังนี้ในตัวอย่างเรียกใช้งานเฉพาะ Keycloak จะใช้ 2 service ตัวอย่างนี้จะเรียกใช้ฐานข้อมูลแล้วค่อยเรียกใช้โปรแกรม keycloak
|
||||
|
||||
```sh
|
||||
docker compose up -d bmahrms-postgres
|
||||
|
|
@ -1257,11 +1261,13 @@ services:
|
|||
|
||||
## Configuration
|
||||
|
||||
การตั้งค่าเฉพาะของแต่ละ service และการตั้งค่า route การตั้งค่า route ส่วนใหญ่จะทำคล้ายๆกัน ส่วนที่เป็น Frontend จะเป็นการเซ็ตโดเมน(URL)ของแต่ละโปรแกรม ส่วนที่เป็น Backend จะเป็นการรวมหลาย backend เข้าในโดเมนเดียวกันแต่อยู่คนละ Subfolder ซึ่งเป็นการรวม Microservice เข้าด้วยกัน
|
||||
การตั้งค่าเฉพาะของแต่ละ service มีสองส่วน
|
||||
- เป็นการตั้งค่าเฉพาะโปรแกรมแตกต่างกันไปตามโปรแกรม
|
||||
- ตั้งค่า route สำหรับ โดเมนต่างๆ(สำหรับ Frontend) และ Microservice (เป็นการรวมหลาย backend เข้าในโดเมนเดียวกันแต่อยู่คนละ Subfolder)
|
||||
|
||||
### Keycloak (bmahrms-id)
|
||||
|
||||
ใช้สำหรับการ login ในระบบ (Identity Server) การสือสารหลัง API Gateway จะเป็น https แบบ self-signed
|
||||
ใช้สำหรับการ login ในระบบ (Identity Server) เพื่อความปลอดภัยการสื่อสารเฉพาะภายใน จะเป็น https จะสร้าง self-signed certificate ขึ้นมาตัวอย่างนี้มีอายุ 10 ปี
|
||||
|
||||
```sh
|
||||
cd bmahrms-service/keycloak_config
|
||||
|
|
@ -1291,7 +1297,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|||
}'
|
||||
```
|
||||
|
||||
### Portainer ()
|
||||
### Portainer (bmahrms-portainer)
|
||||
|
||||
เป็นโปรแกรมสำหรับบริหารจัดการ container สามารถสิ่งเปิดปิดแก้ไขการทำงานของคอนเทนเนอร์ได้ เฉพาะผู้ดูแลระดับสูงถึงจะเข้าใช้งานส่วนนี้
|
||||
|
||||
|
|
@ -1320,7 +1326,7 @@ init_mysql/\*.sql เป็นที่เก็บ SQL Script สำหรั
|
|||
### Report Server
|
||||
|
||||
เป็น Microservice ใช้สำหรับการออกรายงาน ไม่จำเป็นต้องมี domain ของตัวเอง ให้เป็น path ในโดเมนที่มีอยู่ได้ ให้นำไฟล์ต้นแบบซึ่งสร้างจาก MS Word และ Excel มาไว้ที่โฟลเดอร์นี้
|
||||
report-server-template/docx/_.docx, report-server-template/xlsx/_.xlsx
|
||||
report-server-template/docx/files.docx, report-server-template/xlsx/files.xlsx
|
||||
|
||||
```sh
|
||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||
|
|
@ -1342,9 +1348,10 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|||
|
||||
Object Storage ใช้เพื่อเก็บไฟล์ของระบบถูกใช้โดย HRMS และ EDM
|
||||
Route จะมีส่วน API กับ console การทำ route จะให้ console อยู่ใต้ subfoler https://domain/console
|
||||
ในการติดตั้งบน production อาจจะไม่ได้อยู่ใน node เดียวกับ hrms และ apisix ดังนั้นควรอ้างเป็นโดเมนเต็มแทน
|
||||
ในการติดตั้งบน production อาจจะไม่ได้อยู่ใน node เดียวกับ hrms และ apisix ดังนั้นควรอ้างเป็นชื่อโดเมนเต็มแทน
|
||||
|
||||
```sh
|
||||
# bma-hrms-s3.bangkok.go.th
|
||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||
{
|
||||
|
|
@ -1360,7 +1367,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|||
}'
|
||||
# test
|
||||
curl -k -I https://bma-hrms-s3.bangkok.go.th/minio/health/live
|
||||
|
||||
# bma-hrms-s3.bangkok.go.th/console
|
||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||
{
|
||||
|
|
@ -1437,7 +1444,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|||
```
|
||||
|
||||
Kibana Route
|
||||
เป็น UI สำหรับ Elasticsearch สามารถใช้แบบ HTTP ตรงๆได้ผ่าน VPN ถ้า โดยทั่วไปใช้ผ่านเน็ตเวิร์กภายใน API gateway จะช่วยทำ Basic Authentication และ https ให้ควรใช้ ใช้ภายในเสำหรับนักพัฒนาเท่านั้น
|
||||
เป็น UI สำหรับ Elasticsearch สำหรับนักพัฒนามาตรวจสอบค่า ควรใช้จาก VPN และเน็ตเวิร์กภายในเท่านั้น เพื่อความปลอดภัย ให้ API gateway จะช่วยทำ Basic Authentication และ https ให้ ควรใช้ภายในเสำหรับนักพัฒนาเท่านั้น
|
||||
|
||||
```sh
|
||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue