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 คอนเทนเนอร์สามารถเรียนรู้ ตั้งค่า ดูแล รักษาได้ง่ายและรวดเร็ว รองรับการขยายตัว สามารถเพิ่มคลัสเตอร์ได้ง่าย และสามารถปรับเปลี่ยนเป็น Kubernates ได้ในอนาคต
|
||||
สำหรับเอกสารนี้จะเป็นการติดตั้ง Docker บน debian 12 สำหรับบนวินโดว์(เพื่อการทดสอบเท่านั้น)ให้ติดตั้งบน WSL2 หรือใช้ Linux VM
|
||||
การติดตั้งโดยละเอียดดูได้จาก [คู่มือในเวปของ Docker](https://docs.docker.com/engine/install/debian/) วิธีการติดตั้งแบบย่อผ่าน
|
||||
สำหรับเอกสารนี้จะเป็นการติดตั้ง Docker บน debian 12 สำหรับบนวินโดว์(เพื่อการทดสอบเท่านั้น)ให้ติดตั้ง docker บน WSL2
|
||||
การติดตั้งโดยละเอียดดูได้จาก [คู่มือในเวปหลักของ Docker](https://docs.docker.com/engine/install/debian/) ตัวอย่างด้านล่างเป็นวิธีการติดตั้งแบบย่อผ่าน
|
||||
[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.yaml
|
||||
เป็นตัวอย่างแบบง่ายเพื่อใช้งาน nginx เป็นเวปเซิร์ฟเวอร์ ที่พอร์ต 9082 บนเครื่องโฮส ถ้าไม่สั่งหยุดการทำงาน nginx จะเริ่มตัวเองเองถ้าโฮสเปิดขึ้นเครื่องใหม่ ทำงานในเน็ตเวิร์ก hrms การใช้งานใช้เว็บบราวเซอร์ไปที่ http://IP:9082
|
||||
เป็นตัวอย่างแบบง่ายเพื่อใช้งาน เซอร์วิส web ใช้อิมเมจโปรแกรม nginx เนื้อหาไฟล์ในโฟลเดอร์ ./html จะไปปรากฏบนคอนเทนเนอร์ที่ /usr/share/nginx/html เปิดพอร์ต 9082 บนเครื่องโฮส ถ้าไม่สั่งหยุดการทำงาน nginx จะเริ่มตัวเองเองถ้าโฮสเปิดขึ้นเครื่องใหม่ ทำงานในเน็ตเวิร์ก hrms ที่สร้างจากภายนอก
|
||||
|
||||
การใช้งานใช้เว็บบราวเซอร์ไปที่ http://IP:9082
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
|
@ -348,7 +363,7 @@ networks:
|
|||
## การใช้งานคำสั่ง docker compose
|
||||
|
||||
docker compose จะรันคอนเทนเนอร์ของ docker หลายๆตัวพร้อมกันได้ โดยดูการตั้งค่าจากไฟล์ compose.yaml หรือ docker-compose.yaml
|
||||
ที่อยู่ในโฟลเดอร์ที่เรียกคำสั่ง ในการทำงานทั่วไปเพื่อที่จะให้ง่ายต่อการใช้งาน จะใช้ docker compose เป็นหลัก ซึ่งจะมีผลเฉพาะ service ที่เขียนไว้ในไฟล์ compose
|
||||
ที่อยู่ในโฟลเดอร์ที่เรียกคำสั่ง ในการทำงานทั่วไปเพื่อง่ายต่อการใช้งานจะใช้ docker compose เป็นหลัก ซึ่งจะมีผลเฉพาะ service ที่เขียนไว้ในไฟล์ compose
|
||||
|
||||
คำสั่ง docker compose พื้นฐาน (ต้องมีไฟล์ compose.yaml หรือ docker-compose.yaml ในโฟลเดอร์ที่เรียกคำสั่ง)
|
||||
|
||||
|
|
@ -388,7 +403,7 @@ nano html/index.html # สร้างหน้าเวปสำหรับท
|
|||
```sh
|
||||
mkdir -P apisix
|
||||
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
|
||||
```
|
||||
|
||||
|
|
@ -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 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
|
||||
networks:
|
||||
|
|
@ -576,10 +640,6 @@ services:
|
|||
env_file: "service.env"
|
||||
mem_limit: "1g"
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Asia/Bangkok
|
||||
- RABBITMQ_DEFAULT_USER=admin
|
||||
- RABBITMQ_DEFAULT_PASS=MQ_PASSWORD
|
||||
ports:
|
||||
- 5672:5672
|
||||
# - 9122:15672 # UI
|
||||
|
|
@ -610,16 +670,16 @@ services:
|
|||
bmahrms-elasticsearch:
|
||||
image: docker.frappet.com/core/elasticsearch-icu:8.14.3
|
||||
env_file: "service.env"
|
||||
mem_limit: "4g"
|
||||
mem_limit: "4g"
|
||||
volumes:
|
||||
- elasticsearch_data:/usr/share/elasticsearch/data
|
||||
- ./elasticsearch_config/config.yaml:/usr/share/elasticsearch/config/elasticsearch.yml
|
||||
restart: unless-stopped
|
||||
# disable ulimits for Proxmox LXC
|
||||
# ulimits:
|
||||
# memlock:
|
||||
# soft: -1
|
||||
# hard: -1
|
||||
# disable below ulimits if run inside LXC
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
networks:
|
||||
- hrms
|
||||
bmahrms-kibana:
|
||||
|
|
@ -640,15 +700,15 @@ services:
|
|||
volumes:
|
||||
- ./edm_config/keycloak.json:/app/static/keycloak.json:ro
|
||||
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
|
||||
- PREFERRED_AUTH=online
|
||||
- MANAGEMENT_ROLE=doc-management
|
||||
- MINIO_HOST=bmahrms-s3.bangkok.go.th
|
||||
- MINIO_PORT=443
|
||||
- MINIO_SSL=true
|
||||
- MINIO_ACCESS_KEY=dIYTJ2nXmD9cDln7yrwE
|
||||
- MINIO_SECRET_KEY=pENPrGWpkngbLHnPBBh0dp2BoMQL5KZH60MucN6I
|
||||
- MINIO_ACCESS_KEY=put_minio_access_key_here
|
||||
- MINIO_SECRET_KEY=put_minio_secret_key_here
|
||||
# Bucket notification event needed to be configured
|
||||
# Can use prepare script to create bucket
|
||||
- MINIO_BUCKET=edm
|
||||
|
|
@ -657,11 +717,11 @@ services:
|
|||
- ELASTICSEARCH_PORT=9200
|
||||
# Can use prepare script
|
||||
- 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
|
||||
- NODE_TLS_REJECT_UNAUTHORIZED=false
|
||||
extra_hosts:
|
||||
- bma-hrms-id.bangkok.go.th:192.168.2.101
|
||||
- bma-hrms-id.bangkok.go.th:ipaddress_bma_hrms_id
|
||||
depends_on:
|
||||
- bmahrms-postgres
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue