add service.env, correct word and description
This commit is contained in:
parent
6bb58b9a84
commit
95ddc1c671
1 changed files with 82 additions and 22 deletions
|
|
@ -263,15 +263,28 @@ API Gateway เป็นส่วนสำคัญในระบบ Microservi
|
||||||
|
|
||||||
# ขั้นตอนการติดตั้งระบบ
|
# ขั้นตอนการติดตั้งระบบ
|
||||||
|
|
||||||
เอกสารสำหรับการติดตั้งระบบของ BMA HRMS โปรแกรมในยุคปัจจุบันจะทำงานบนเทคโนโลยีคอนเทนเนอร์ เพื่อยืดหยุ่นในการทำงาน ตั้งแต่การพัฒนา ทดสอบและ ใช้งานจริง (Production) จำเป็นต้องเข้าใจพื้นฐานการทำงาน Docker เสียก่อน ก็จะสามารถจัดการบริการเพิ่มเติมที่จะเกิดขึ้นอนาคต เนื่องจากการใช้งานเป็นรูปแบบเดียวกัน นอกจากการใช้งานผ่านคำสั่งแล้วสามารถใช้ Portainer ในการจัดการผ่าน Web UI ได้ การติดตั้งจะอยู่ในเอกสารนี้
|
ผู้อ่านจำเป็นต้องมีความรู้และเข้าใจคำสั่ง และระบบไฟล์ของ Linux เป็นอย่างดีมาก่อน เอกสารจะแสดงวิธีการติดตั้งระบบของ BMA HRMS บนเทคโนโลยีคอนเทนเนอร์ มีการปูพื้นคำสั่งพื้นฐานของ Docker ที่จำเป็นให้ ลักษณะการติดตั้งและใช้งานจะอยู่ในรูปแบบเดียวกัน ทำให้ สามารถจัดการบริการเพิ่มเติมที่จะเกิดขึ้นอนาคตได้ นอกจากการใช้งานผ่านคำสั่งแล้วสามารถใช้ Portainer จัดการผ่าน Web UI ได้ การติดตั้งจะอยู่ในเอกสารนี้
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## Linux VM
|
||||||
|
เครื่องโฮสเป็น debian 12 แบบมาตรฐาน ตั้งค่า locale และ Time Zone ให้เหมาะสำหรับประเทศไทย
|
||||||
|
```
|
||||||
|
sudo dpkg-reconfigure locales
|
||||||
|
sudo timedatectl set-timezone Asia/Bangkok
|
||||||
|
date
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
## ติดตั้ง Docker
|
## ติดตั้ง Docker
|
||||||
|
|
||||||
Docker คอนเทนเนอร์สามารถเรียนรู้ ตั้งค่า ดูแล รักษาได้ง่ายและรวดเร็ว รองรับการขยายตัว สามารถเพิ่มคลัสเตอร์ได้ง่าย และสามารถปรับเปลี่ยนเป็น Kubernates ได้ในอนาคต
|
Docker คอนเทนเนอร์สามารถเรียนรู้ ตั้งค่า ดูแล รักษาได้ง่ายและรวดเร็ว รองรับการขยายตัว สามารถเพิ่มคลัสเตอร์ได้ง่าย และสามารถปรับเปลี่ยนเป็น Kubernates ได้ในอนาคต
|
||||||
สำหรับเอกสารนี้จะเป็นการติดตั้ง Docker บน debian 12 สำหรับบนวินโดว์(เพื่อการทดสอบเท่านั้น)ให้ติดตั้งบน WSL2 หรือใช้ Linux VM
|
สำหรับเอกสารนี้จะเป็นการติดตั้ง Docker บน debian 12 สำหรับบนวินโดว์(เพื่อการทดสอบเท่านั้น)ให้ติดตั้ง docker บน WSL2
|
||||||
การติดตั้งโดยละเอียดดูได้จาก [คู่มือในเวปของ Docker](https://docs.docker.com/engine/install/debian/) วิธีการติดตั้งแบบย่อผ่าน
|
การติดตั้งโดยละเอียดดูได้จาก [คู่มือในเวปหลักของ Docker](https://docs.docker.com/engine/install/debian/) ตัวอย่างด้านล่างเป็นวิธีการติดตั้งแบบย่อผ่าน
|
||||||
[convenience script](https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script) ทำตามวิธีการนี้
|
[convenience script](https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script) ทำตามวิธีการนี้
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
@ -327,7 +340,9 @@ docker network create [network_name] # สร้างเน็ตเวิร
|
||||||
สามารถเพิ่มจำนวนคอนเทนเนอร์ในแต่ละบริการได้ง่ายโดยใช้ docker-compose up --scale
|
สามารถเพิ่มจำนวนคอนเทนเนอร์ในแต่ละบริการได้ง่ายโดยใช้ docker-compose up --scale
|
||||||
|
|
||||||
## ตัวอย่างของไฟล์ docker-compose.yaml
|
## ตัวอย่างของไฟล์ docker-compose.yaml
|
||||||
เป็นตัวอย่างแบบง่ายเพื่อใช้งาน nginx เป็นเวปเซิร์ฟเวอร์ ที่พอร์ต 9082 บนเครื่องโฮส ถ้าไม่สั่งหยุดการทำงาน nginx จะเริ่มตัวเองเองถ้าโฮสเปิดขึ้นเครื่องใหม่ ทำงานในเน็ตเวิร์ก hrms การใช้งานใช้เว็บบราวเซอร์ไปที่ http://IP:9082
|
เป็นตัวอย่างแบบง่ายเพื่อใช้งาน เซอร์วิส web ใช้อิมเมจโปรแกรม nginx เนื้อหาไฟล์ในโฟลเดอร์ ./html จะไปปรากฏบนคอนเทนเนอร์ที่ /usr/share/nginx/html เปิดพอร์ต 9082 บนเครื่องโฮส ถ้าไม่สั่งหยุดการทำงาน nginx จะเริ่มตัวเองเองถ้าโฮสเปิดขึ้นเครื่องใหม่ ทำงานในเน็ตเวิร์ก hrms ที่สร้างจากภายนอก
|
||||||
|
|
||||||
|
การใช้งานใช้เว็บบราวเซอร์ไปที่ http://IP:9082
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
|
|
@ -348,7 +363,7 @@ networks:
|
||||||
## การใช้งานคำสั่ง docker compose
|
## การใช้งานคำสั่ง docker compose
|
||||||
|
|
||||||
docker compose จะรันคอนเทนเนอร์ของ docker หลายๆตัวพร้อมกันได้ โดยดูการตั้งค่าจากไฟล์ compose.yaml หรือ docker-compose.yaml
|
docker compose จะรันคอนเทนเนอร์ของ docker หลายๆตัวพร้อมกันได้ โดยดูการตั้งค่าจากไฟล์ compose.yaml หรือ docker-compose.yaml
|
||||||
ที่อยู่ในโฟลเดอร์ที่เรียกคำสั่ง ในการทำงานทั่วไปเพื่อที่จะให้ง่ายต่อการใช้งาน จะใช้ docker compose เป็นหลัก ซึ่งจะมีผลเฉพาะ service ที่เขียนไว้ในไฟล์ compose
|
ที่อยู่ในโฟลเดอร์ที่เรียกคำสั่ง ในการทำงานทั่วไปเพื่อง่ายต่อการใช้งานจะใช้ docker compose เป็นหลัก ซึ่งจะมีผลเฉพาะ service ที่เขียนไว้ในไฟล์ compose
|
||||||
|
|
||||||
คำสั่ง docker compose พื้นฐาน (ต้องมีไฟล์ compose.yaml หรือ docker-compose.yaml ในโฟลเดอร์ที่เรียกคำสั่ง)
|
คำสั่ง docker compose พื้นฐาน (ต้องมีไฟล์ compose.yaml หรือ docker-compose.yaml ในโฟลเดอร์ที่เรียกคำสั่ง)
|
||||||
|
|
||||||
|
|
@ -388,7 +403,7 @@ nano html/index.html # สร้างหน้าเวปสำหรับท
|
||||||
```sh
|
```sh
|
||||||
mkdir -P apisix
|
mkdir -P apisix
|
||||||
mkdir -p bmahrms-service/{edm_config,elasticsearch_config,init_mysql,keycloak_config,report-server-templates}
|
mkdir -p bmahrms-service/{edm_config,elasticsearch_config,init_mysql,keycloak_config,report-server-templates}
|
||||||
ืืmkdir -p bmahrms-service/report-server-templates/{docx,xlsx}
|
mkdir -p bmahrms-service/report-server-templates/{docx,xlsx}
|
||||||
mkdir -p bmahrms
|
mkdir -p bmahrms
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -518,7 +533,56 @@ curl https://bma-hrms-id.bangkok.go.th -vvv
|
||||||
- **Frappet Report Server (bmahrms-report-server)** ใช้สำหรับสร้างรายงานจากเอกสารต้นแบบ ออกแบบเองได้ในรูปของ ไฟล์ docx และ xlsx เอกสารที่สร้างสามารถส่งออกเป็น docx, xlsx, pdf ได้
|
- **Frappet Report Server (bmahrms-report-server)** ใช้สำหรับสร้างรายงานจากเอกสารต้นแบบ ออกแบบเองได้ในรูปของ ไฟล์ docx และ xlsx เอกสารที่สร้างสามารถส่งออกเป็น docx, xlsx, pdf ได้
|
||||||
- **Frappet EDM** ใช้สำหรับจัดการเอกสารที่ปลอดภัยรองรับโหลดจำนวนมากได้ จะมีระบบย่อยเบื้องหลังหลายตัว (bmahrms-edm,bmahrms-elasticsearch,bmahrms-kibana,bmahrms-mq)
|
- **Frappet EDM** ใช้สำหรับจัดการเอกสารที่ปลอดภัยรองรับโหลดจำนวนมากได้ จะมีระบบย่อยเบื้องหลังหลายตัว (bmahrms-edm,bmahrms-elasticsearch,bmahrms-kibana,bmahrms-mq)
|
||||||
|
|
||||||
docker/bmahrms-service/compose.yaml ให้แก้ตัวแปรให้เหมาะสมตาม
|
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
|
||||||
|
```
|
||||||
|
# Generic
|
||||||
|
TZ=Asia/Bangkok
|
||||||
|
# Keycloak
|
||||||
|
KEYCLOAK_ADMIN=admin
|
||||||
|
KEYCLOAK_ADMIN_PASSWORD=put_keycloak_admin_password_here
|
||||||
|
|
||||||
|
# Keycloak
|
||||||
|
KC_DB=postgres
|
||||||
|
#KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak
|
||||||
|
KC_DB_URL_HOST=bmahrms-postgres
|
||||||
|
KC_DB_URL_DATABASE=keycloak
|
||||||
|
KC_DB_PASSWORD=put_keycloak_db_password_here
|
||||||
|
KC_DB_USERNAME=keycloak
|
||||||
|
KC_DB_SCHEMA=public
|
||||||
|
|
||||||
|
# PostgreSQL (keycloak)
|
||||||
|
POSTGRES_DB=keycloak
|
||||||
|
POSTGRES_USER=keycloak
|
||||||
|
POSTGRES_PASSWORD=put_keycloak_db_password_here
|
||||||
|
|
||||||
|
# MiniO
|
||||||
|
MINIO_ROOT_USER=admin
|
||||||
|
MINIO_ROOT_PASSWORD=put_minio_admin_password_here
|
||||||
|
MINIO_BROWSER_REDIRECT_URL=https://bmahrms-s3.bangkok.go.th/console/
|
||||||
|
|
||||||
|
# RabbitMQ
|
||||||
|
RABBITMQ_DEFAULT_USER=admin
|
||||||
|
RABBITMQ_DEFAULT_PASS=put_rabbitmq_admin_password_here
|
||||||
|
|
||||||
|
# MySQL
|
||||||
|
MYSQL_ROOT_PASSWORD=put_mysql_admin_password_here
|
||||||
|
MYSQL_DATABASE=bma_ehr
|
||||||
|
MYSQL_USER=frappet
|
||||||
|
MYSQL_PASSWORD=put_mysql_db_password_here
|
||||||
|
|
||||||
|
# Elasticsearch & Kibana
|
||||||
|
xpack.security.enabled=false
|
||||||
|
discovery.type=single-node
|
||||||
|
ELASTICSEARCH_HOSTS=http://bmahrms-elasticsearch:9200
|
||||||
|
|
||||||
|
# REDIS
|
||||||
|
REDIS_PORT=6379
|
||||||
|
REDIS_DATABASES=16
|
||||||
|
```
|
||||||
|
|
||||||
|
docker/bmahrms-service/compose.yaml ให้แก้ค่า PUBLIC_KEY MINIO_ACCESS_KEY,MINIO_SECRET_KEY, ipaddress_bma_hrms_id ให้เหมาะสม
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
networks:
|
networks:
|
||||||
|
|
@ -576,10 +640,6 @@ services:
|
||||||
env_file: "service.env"
|
env_file: "service.env"
|
||||||
mem_limit: "1g"
|
mem_limit: "1g"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
|
||||||
- TZ=Asia/Bangkok
|
|
||||||
- RABBITMQ_DEFAULT_USER=admin
|
|
||||||
- RABBITMQ_DEFAULT_PASS=MQ_PASSWORD
|
|
||||||
ports:
|
ports:
|
||||||
- 5672:5672
|
- 5672:5672
|
||||||
# - 9122:15672 # UI
|
# - 9122:15672 # UI
|
||||||
|
|
@ -615,11 +675,11 @@ services:
|
||||||
- elasticsearch_data:/usr/share/elasticsearch/data
|
- elasticsearch_data:/usr/share/elasticsearch/data
|
||||||
- ./elasticsearch_config/config.yaml:/usr/share/elasticsearch/config/elasticsearch.yml
|
- ./elasticsearch_config/config.yaml:/usr/share/elasticsearch/config/elasticsearch.yml
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
# disable ulimits for Proxmox LXC
|
# disable below ulimits if run inside LXC
|
||||||
# ulimits:
|
ulimits:
|
||||||
# memlock:
|
memlock:
|
||||||
# soft: -1
|
soft: -1
|
||||||
# hard: -1
|
hard: -1
|
||||||
networks:
|
networks:
|
||||||
- hrms
|
- hrms
|
||||||
bmahrms-kibana:
|
bmahrms-kibana:
|
||||||
|
|
@ -640,15 +700,15 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ./edm_config/keycloak.json:/app/static/keycloak.json:ro
|
- ./edm_config/keycloak.json:/app/static/keycloak.json:ro
|
||||||
environment:
|
environment:
|
||||||
- PUBLIC_KEY=REALMS_PUBLIC_KEY
|
- PUBLIC_KEY=put_realm_edm_public_key_here
|
||||||
- REALM_URL=https://bma-hrms-id.bangkok.go.th/realms/EDM
|
- REALM_URL=https://bma-hrms-id.bangkok.go.th/realms/EDM
|
||||||
- PREFERRED_AUTH=online
|
- PREFERRED_AUTH=online
|
||||||
- MANAGEMENT_ROLE=doc-management
|
- MANAGEMENT_ROLE=doc-management
|
||||||
- MINIO_HOST=bmahrms-s3.bangkok.go.th
|
- MINIO_HOST=bmahrms-s3.bangkok.go.th
|
||||||
- MINIO_PORT=443
|
- MINIO_PORT=443
|
||||||
- MINIO_SSL=true
|
- MINIO_SSL=true
|
||||||
- MINIO_ACCESS_KEY=dIYTJ2nXmD9cDln7yrwE
|
- MINIO_ACCESS_KEY=put_minio_access_key_here
|
||||||
- MINIO_SECRET_KEY=pENPrGWpkngbLHnPBBh0dp2BoMQL5KZH60MucN6I
|
- MINIO_SECRET_KEY=put_minio_secret_key_here
|
||||||
# Bucket notification event needed to be configured
|
# Bucket notification event needed to be configured
|
||||||
# Can use prepare script to create bucket
|
# Can use prepare script to create bucket
|
||||||
- MINIO_BUCKET=edm
|
- MINIO_BUCKET=edm
|
||||||
|
|
@ -657,11 +717,11 @@ services:
|
||||||
- ELASTICSEARCH_PORT=9200
|
- ELASTICSEARCH_PORT=9200
|
||||||
# Can use prepare script
|
# Can use prepare script
|
||||||
- ELASTICSEARCH_INDEX=edm-index
|
- ELASTICSEARCH_INDEX=edm-index
|
||||||
- AMQ_URL=amqp://admin:admin123456@bmahrms-mq:5672
|
- AMQ_URL=amqp://admin:put_rabbitmq_admin_password_here@bmahrms-mq:5672
|
||||||
- AMQ_QUEUE=edm
|
- AMQ_QUEUE=edm
|
||||||
- NODE_TLS_REJECT_UNAUTHORIZED=false
|
- NODE_TLS_REJECT_UNAUTHORIZED=false
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- bma-hrms-id.bangkok.go.th:192.168.2.101
|
- bma-hrms-id.bangkok.go.th:ipaddress_bma_hrms_id
|
||||||
depends_on:
|
depends_on:
|
||||||
- bmahrms-postgres
|
- bmahrms-postgres
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue