Clean description for human readable.
This commit is contained in:
parent
2e951f99f4
commit
c83eea9b52
3 changed files with 101 additions and 103 deletions
69
.env.example
69
.env.example
|
|
@ -1,76 +1,35 @@
|
|||
# N8 (optional): allowlist โฮสต์ลิงก์ไฟล์รีโมต — ไม่ตั้ง = admincourt.go.th
|
||||
# EXTERNAL_FILE_HOSTS=admincourt.go.th
|
||||
# N10 (optional): API key ของ /api/external/* (backend e-Court เรียก server-to-server)
|
||||
|
||||
########### สำหรับ npm run dev และ แอปบน container
|
||||
# Sign/Hash ที่ใช้ฝังในเอกสาร(docx)
|
||||
SECRET=""
|
||||
SECRET="" # HmacSHA256
|
||||
PRIVATE_KEY_HEX=""
|
||||
PUBLIC_KEY_HEX=""
|
||||
## ไม่ตั้ง/ว่าง = ปฏิเสธทุก request (fail closed) — ตั้งค่ายาวและสุ่ม เช่น 32+ ตัวอักษร
|
||||
EXTERNAL_API_KEY=""
|
||||
# docver token (2026-10-22): API key ของ POST /api/documents/token (header x-api-key)
|
||||
# และ POST /api/note/auth/token (เส้น mint login-token ของแอป note — PLAN-SSO.md)
|
||||
# ไม่ตั้ง/ว่าง = ปฏิเสธทุก request (fail closed) — ตั้งค่ายาวและสุ่ม เช่น 32+ ตัวอักษร
|
||||
# (ห้าม log ค่า key ดิบ — เทียบแบบ timing-safe ทุกครั้ง)
|
||||
# GET /api/documents/latest (2026-10-31) รับ DOCVER_API_KEY นี้ หรือ EXTERNAL_API_KEY
|
||||
# (ด้านบน) ตัวใดตัวหนึ่งตรง = ผ่าน — ทั้งคู่ไม่ตั้ง = 401 fail closed เช่นกัน
|
||||
DOCVER_API_KEY=
|
||||
DOCVER_API_KEY=""
|
||||
# secret เซ็น/ตรวจ JWT HS256 ของทุก endpoint /api/documents/* (Authorization: Bearer)
|
||||
# + login-token ของ SSO (แยกสิทธิ์ด้วย claim purpose — PLAN-SSO.md D4)
|
||||
# ไม่ตั้ง/ว่าง = ออก token ไม่ได้ (500) และทุก endpoint ตอบ 401 รวมถึงเข้า annotate
|
||||
# ไม่ได้ (ทางเข้า session เดียวคือลิงก์ SSO) — dev ต้องมีค่านี้ใน .env เสมอ
|
||||
# ⚠️ ก่อน production: rotate ค่าจริง (ค่า hex เดิมเคยถูก commit ไว้ใน comment — ถือว่าหลุด)
|
||||
DOCVER_TOKEN_SECRET=
|
||||
# ใช้ตอน migrate และ การใช้งาน
|
||||
# ใช้ตอน migrate และ การใช้งาน ใน development
|
||||
DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:54322/ecourt-note
|
||||
### สำหรับโค้ดตัวอย่างระบบนอกเรียกเข้ามาไม่ได้ใช้ในระบบนี้ ห้ามเอาไช้
|
||||
DOCEDIT_BASE_URL=http://127.0.0.1:3000/docedit
|
||||
# Optional เวลาหมดอายุที่ฝังไว้ในข้อมูล (ticket_data), worker ควรเท่ากับจำนวน CPU core -1
|
||||
# Optional ไม่ใส่ก็ได้มีค่า default
|
||||
TMPL_PATH='./public/tmpl'
|
||||
TICKET_SEC=300
|
||||
DOCX_WORKERS=3
|
||||
TICKET_SEC=300 # อายุของ ticket ยิ่งน้อยยิ่งดี
|
||||
DOCX_WORKERS=3 # cpu core หักออก 1
|
||||
|
||||
########### สำหรับโค้ดตัวอย่างให้ระบบนอกเรียกเข้ามาไม่ได้ใช้ในระบบนี้ ห้ามเอาไช้ในส่วนอื่น
|
||||
DOCEDIT_BASE_URL=http://127.0.0.1:3000/docedit
|
||||
|
||||
########### สำหรับ แอป และ service ต่างๆใน container
|
||||
APP_DOMAIN=docedit.example.com
|
||||
|
||||
## สำหรับ docker-compose.yaml
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=postgres
|
||||
POSTGRES_DB=note
|
||||
|
||||
# ใช้สำหรับ local dev ถ้า minio อยู่คนละเครื่องให้ดูค่าให้เหมาะสม
|
||||
MINIO_ENDPOINT=127.0.0.1
|
||||
MINIO_PORT=19000
|
||||
MINIO_USE_SSL=false
|
||||
MINIO_ACCESS_KEY=minioadmin
|
||||
MINIO_SECRET_KEY=minioadmin
|
||||
# MINIO_BUCKET=docver
|
||||
|
||||
# DOCVER_LINK_TTL_SECONDS=900
|
||||
|
||||
# DOCVER_TOKEN_TTL_SECONDS=3600
|
||||
|
||||
# (ถอดแล้ว 2026-10-30) NOTE_SESSION_SECRET ของรอบ cookie oacCaseSig — แอป note
|
||||
# เปลี่ยน session เป็น token แบบ add-in แล้ว (access_token purpose=login จาก
|
||||
# POST /api/note/auth/session เก็บใน localStorage "note-auth") จึงใช้
|
||||
# DOCVER_TOKEN_SECRET ตัวเดียวทั้งระบบ: เซ็น login-token ของลิงก์ + เซ็น/ตรวจ
|
||||
# session token ฝั่ง Server Actions และ API ของแอป (lib/note-token.ts)
|
||||
|
||||
# dev-only (ทางเลือก): เปิดฟอร์ม "สร้างลิงก์ทดสอบ" บนหน้า /note + route
|
||||
# POST /api/note/auth/dev-link — mint ลิงก์ SSO จากหน้าเว็บเพื่อทดสอบ flow จริง
|
||||
# ⚠️ ตัวช่วยทดสอบเท่านั้น ไม่ใช่ทางเข้าจริง: ปิด = route ตอบ 404 + ฟอร์มหายจากหน้า
|
||||
# และไม่ทำงานใน production build เด็ดขาด (NODE_ENV=production) — dev server ที่แชร์
|
||||
# บน LAN เปิดไว้ = คนในวงแชร์เครือข่าย mint ลิงก์เข้าระบบได้ จึงควรเปิดเฉพาะตอนทดสอบ
|
||||
# NOTE_SSO_DEV_MINT=1
|
||||
|
||||
# add-in ticket auth (2026-10-27, docs/PLAN-ADDIN-AUTH.md): add-in ใน Word ขอ token
|
||||
# ที่ POST /api/documents/token ด้วย body {ticket_data, HmacSha256} ที่ e-Court stamp
|
||||
# มากับไฟล์ — secret ต้องตรงกับตัว stamp ของ e-Court ทั้งสองฝั่ง
|
||||
# ฝั่ง server ตรวจ HMAC ของ ticket: ADDIN_TICKET_SECRET (ไม่ตั้ง = ใช้ env SECRET
|
||||
# ของกลุ่ม template → ยังไม่ตั้งอีก = "super_secret" ตาม requirement)
|
||||
# ⚠️ production ต้องตั้งค่าจริง — ค่า default รู้กันหมด = ใครก็ปลอม ticket ได้
|
||||
# (ใช้ร่วมกับทาง ticket ของ SSO POST /api/note/auth/session ด้วย — PLAN-SSO.md D12)
|
||||
# 2026-10-30: ทาง ticket ของ SSO (POST /api/note/auth/session) ปฏิเสธค่า default
|
||||
# นี้เฉพาะใน production — dev ใช้ default ทดสอบโหมด ticket ได้เลย (เครื่องมือ dev
|
||||
# อย่าง make-login-link/make-ticket-docx ก็ default ค่าเดียวกัน)
|
||||
# ADDIN_TICKET_SECRET=super_secret
|
||||
# ฝั่ง add-in (inline ลง bundle ตอน build — ใช้เป็นแค่ UX gate ตัดเคสไฟล์ถูกแก้ก่อนยิง
|
||||
# network ส่วนความมั่นคงจริงอยู่ที่ฝั่ง server ข้างบน · ตามคำขอผู้ใช้ 2026-10-29
|
||||
# แก้ add-in เป็นงานแยก — ยังคงไว้ตาม PLAN-ADDIN-AUTH.md D3)
|
||||
# NEXT_PUBLIC_ADDIN_TICKET_SECRET=super_secret
|
||||
|
|
|
|||
|
|
@ -4,16 +4,13 @@ import Link from "next/link";
|
|||
import type { ChangeEvent } from 'react';
|
||||
import DependentDropdown, { DropdownData } from '@/components/utils/DependentDropdown';
|
||||
import {
|
||||
Bookmark,ToyBrick,FilePenLine,BicepsFlexed,Rocket,Workflow, Files,Blocks,FileQuestionMark,
|
||||
Bookmark, ToyBrick, FilePenLine, BicepsFlexed, Rocket, Workflow, Files, Blocks, FileQuestionMark,
|
||||
ExternalLink,
|
||||
FileText,
|
||||
Highlighter,
|
||||
MessagesSquare,
|
||||
} from "lucide-react";
|
||||
|
||||
|
||||
|
||||
|
||||
export default function HomePage() {
|
||||
const templateData: DropdownData = {
|
||||
T_X: ['T_no_warning', 'TF_no_warning_P2', 'TS_P2_IN'],
|
||||
|
|
@ -30,10 +27,10 @@ export default function HomePage() {
|
|||
<div style={{ padding: '2rem' }}>
|
||||
<div className="mx-auto max-w-4xl px-4 pb-16 pt-12 sm:px-6">
|
||||
<h1 className="font-display text-3xl tracking-tight text-ink sm:text-headline">
|
||||
eCourt Template
|
||||
DOCEDIT Template & Add-ins
|
||||
</h1>
|
||||
<p className="mt-2 text-body text-ink-soft">
|
||||
ระบบสร้างเทมเพลตเอกสารแบบใหม่ MS Word จากไฟล์ JSON และ Template docx
|
||||
ระบบเทมเพลตเพื่อสร้างเอกสาร MS Word และจัดการรุ่นของเอกสารผ่าน Word Add-ins ยุคใหม่ แบบอิสระ ที่สามารถ Integrate กับระบบความปลอดภัยของระบบอื่นๆได้
|
||||
</p>
|
||||
|
||||
<section className="mt-10">
|
||||
|
|
@ -49,40 +46,56 @@ export default function HomePage() {
|
|||
title: "DOCX Template",
|
||||
detail:
|
||||
"ออกแบบหน้าของเอกสารจาก Microsoft Word โดยไม่ต้องใช้เครื่องมือพิเศษ " +
|
||||
"สามารถนำเอกสารตัวเดิมมาใช้ออกแบบได้เลย " +
|
||||
"ไม่จำเป็นต้องมีความรู้ด้านการเขียนโปรแกรมหรือ XML ก็สามารถสร้างเทมเพลตได้",
|
||||
"สามารถนำเอกสารตัวเดิมมาใช้ออกแบบได้ทันที " +
|
||||
"ไม่จำเป็นต้องมีทักษะการเขียนโปรแกรมก็สามารถสร้างเทมเพลตได้ด้วยตัวเอง",
|
||||
},
|
||||
{
|
||||
icon: FilePenLine,
|
||||
title: "Fill Form",
|
||||
detail:
|
||||
"รอรับ Rich และ Plain Text Content Control " +
|
||||
"สามารถสร้างฟอร์มสำหรับกรอกข้อมูลพร้อมข้อมูลตั้งต้น " +
|
||||
"ผู้ใช้สามารถนำไปกรอกข้อมูลใน Word ได้เลย และสามารถเใช้โปรแกรมดึงข้อมูลกับมาเก็บในฐานข้อมูลได้",
|
||||
"สามารถสร้างฟอร์มสำหรับกรอกข้อมูลจากไฟล์ docx " +
|
||||
"สามารถใช้ API ดึงข้อมูลในฟอร์มกลับมาเพื่อนำไปใช้งานต่อ เช่นเก็บในฐานข้อมูลได้",
|
||||
},
|
||||
{
|
||||
icon: ToyBrick,
|
||||
title: "Integrate with Other System",
|
||||
title: "Integration",
|
||||
detail:
|
||||
"มี Web API สำหรับสร้างเอกสารจากเทมเพลต(DOCX) กับข้อมูล(JSON) " +
|
||||
"มี API Key เพื่อจำกัดการใช้งาน สามารถออกบัตรผ่านที่ลงลายเซ็นต์ด้วย HmacSha256" +
|
||||
"ระบบทำงานเป็นอิสระแบบ Microservice ใช้ API Key เพื่อจำกัดการใช้งาน สามารถออกบัตรผ่านที่ลงลายเซ็นต์ด้วย HmacSha256" +
|
||||
"เพื่อให้ผสาน(Integrate)กับระบบงานที่มีอยู่เดิม ได้อย่างปลอดภัย" +
|
||||
"เพื่อให้ผสานกับระบบงานอื่นๆ ได้อย่างปลอดภัย",
|
||||
},
|
||||
{
|
||||
icon: FileText,
|
||||
title: "Dynamic Document",
|
||||
title: "Dynamic Template",
|
||||
detail:
|
||||
"รองรับเทมเพลตที่ซับซ้อน ข้อมูลที่มีไม่แน่นอนอย่างอาเรย์ การแสดงผลตามเงื่อนไขแบบต่างๆ " +
|
||||
"รองรับเทมเพลตที่ซับซ้อน ข้อมูลที่มีจำนวนไม่แน่นอน การแสดงผลตามเงื่อนไขแบบต่างๆ " +
|
||||
"สามารถเขียนโปรแกรมเพิ่มลงในเทมเพลตได้ รองรับ FOR , IF แทรกโค้ด " +
|
||||
"ฟังก์ชั่นในตัวเพื่อรองรับการสร้าง Content Control Bookmark ฯลฯ",
|
||||
"ฟังก์ชั่นเพื่อสร้าง Content Control Bookmark ฯลฯ" +
|
||||
"มี API ช่วยนักพัฒนาสร้างเอกสารจากเทมเพลต(DOCX)และข้อมูล(JSON) "
|
||||
},
|
||||
{
|
||||
icon: Rocket,
|
||||
title: " High Performance",
|
||||
title: "Versioning",
|
||||
detail:
|
||||
"containerization ขยายระบบได้ง่าย, ระบบเทมเพลตใช้การ XML โดยตรง " +
|
||||
"การสร้าง template เป็นแบบ Multi-Thread รองรับ CPU หลายแกน " +
|
||||
"",
|
||||
"จัดการ Veresion(รุ่น)ของเอกสารร่วมกันได้ผ่าน Microsoft Word Add-ins " +
|
||||
"สามารถดึง Veresion ที่ต้องการกลับมาแก้ไขได้ ",
|
||||
},
|
||||
{
|
||||
icon: Rocket,
|
||||
title: "High Performance",
|
||||
detail:
|
||||
"containerization ขยายระบบได้ง่าย " +
|
||||
"การสร้าง template ทำงานแบบ Multi-Thread รองรับ CPU หลายแกน " +
|
||||
"เก็บไฟล์ใน Object Storage มีความทนทานและรับโหลดได้หนัก",
|
||||
},
|
||||
{
|
||||
icon: Rocket,
|
||||
title: "PDF Export",
|
||||
detail:
|
||||
"ทุกครั้งที่ Save Veresion จะสร้าง PDF อัตโนมัติในด้วย MS Word ทำให้ได้เค้าโครงของหน้าตรงกับเอกสารที่แก้ไข " +
|
||||
"โดยไม่เกิดปัญหาความผิดเพี้ยนของ PDF ที่ใช้ MS Office ต่างเวอร์ชั่นในการแปลง ประมวลผลที่ไคลเอนต์ลดการใช้ทรัพยากรที่เซิร์ฟเวอร์",
|
||||
|
||||
},
|
||||
].map(({ icon: Icon, title, detail }) => (
|
||||
<div
|
||||
|
|
@ -137,13 +150,15 @@ export default function HomePage() {
|
|||
<div>
|
||||
<h3 className="font-display text-subhead text-ink">Template & Data</h3>
|
||||
<p className="mt-1.5 text-sm leading-relaxed text-ink-soft">
|
||||
Template: <Link href="/tmpl/T_X.docx">T_X.docx</Link>,
|
||||
<b>Template: </b><Link href="/tmpl/T_X.docx">T_X.docx</Link>,
|
||||
<Link href="/tmpl/T12_X.docx">T12_X.docx</Link><br />
|
||||
Data: <Link href="tmpl/TF_no_warning_P2.json">TF_no_warning_P2.json</Link>,
|
||||
<b>Data: </b><Link href="tmpl/TF_no_warning_P2.json">TF_no_warning_P2.json</Link>,
|
||||
<Link href="/tmpl/T_no_warning.json">T_no_warning.json</Link>,
|
||||
<Link href="/tmpl/TS_P2_IN.json">TS_P2_IN.json</Link><br />
|
||||
<Link href="/tmpl/T12_b2_IN.json">T12_b2_IN.json</Link>,
|
||||
<Link href="/tmpl/T12_FD155_3s-long.json">T12_FD155_3s-long.json</Link>
|
||||
<br />
|
||||
นำไฟล์ไปทดสอบกับ <Link href="/api/swagger/" target="_top">API</Link>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -221,10 +236,12 @@ export default function HomePage() {
|
|||
<div>
|
||||
<h3 className="font-display text-subhead text-ink">วิธีการใช้งาน</h3>
|
||||
<p className="mt-1.5 text-sm leading-relaxed text-ink-soft">
|
||||
<Link href="https://www.youtube.com/watch?v=QxMitSk3S4E" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
แนะนำเทมเพลตของ Docedit เบื้องต้น</Link><br />
|
||||
<Link href="https://www.youtube.com/watch?v=3emGNqRZgMs" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
Sideload Office add-ins</Link>
|
||||
<a target="_blank" href="https://www.youtube.com/watch?v=QxMitSk3S4E" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
แนะนำเทมเพลตของ Docedit เบื้องต้น</a><br />
|
||||
<a target="_blank" href="https://www.youtube.com/watch?v=kOBoVN-KQzU" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
ติดตั้ง MS Word Add-ins</a>
|
||||
<a target="_blank" href="https://www.youtube.com/watch?v=P1-xe24nOUo" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
ใช้งาน DOCEDIT Add-ins</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -246,18 +263,38 @@ export default function HomePage() {
|
|||
Word Add-ins<br />
|
||||
</h3>
|
||||
<p className="mt-1.5 text-sm leading-relaxed text-ink-soft">
|
||||
ดาวน์โหลด
|
||||
<Link href="/wordaddin/manifest.xml" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
manifest.xml </Link>
|
||||
ไว้ที่ SharePoint แชร์เน็ตเวิร์ก หรือดาวน์โหลดสคริปต์ PowerShell(Dev Install)
|
||||
<Link href="/wordaddin/install-word-addins.ps1" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
install-word-addins.ps1 </Link>
|
||||
แล้วใช้คำสั่ง PowerShell ด้านล่างเพื่อติดตั้ง Add-ins ใน Word<br />
|
||||
การติดตั้งสามารถติดตั้งได้หลายวิธี
|
||||
<ol>
|
||||
<li>1. ติดตั้งผ่าน Office Store (วิธีทั่วไปสำหรับผู้ใช้ทั่วไป)</li>
|
||||
<li>2. Sideloading ด้วยไฟล์ <Link target="_blank" href="/wordaddin/manifest.xml" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
manifest.xml </Link>(Office 365) Insert>Add-ins>My Add-ins คลิ้ก "Upload My Add-in"</li>
|
||||
<li>3. Shared Folder Sideloading(Office 2019+) นำไฟล์ <Link target="_blank" href="/wordaddin/manifest.xml" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
manifest.xml </Link> ไปทำตามวีดีโอ <a target="_blank" href="https://www.youtube.com/watch?v=kOBoVN-KQzU" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
ติดตั้ง MS Word Add-ins</a> </li>
|
||||
<li>4. ใช้คำสั่ง reg.exe ร่วมกับ <Link target="_blank" href="/wordaddin/manifest.xml" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
manifest.xml </Link> ไปทำตามวีดีโอ <a target="_blank" href="https://www.youtube.com/watch?v=kOBoVN-KQzU" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
ติดตั้ง MS Word Add-ins</a> </li>
|
||||
<li>5. สคริปต์ PowerShell(Dev Install)
|
||||
<Link href="/wordaddin/install-word-addins.ps1" className="focus-ring -m-1 inline-block rounded-md px-1 py-0.5 font-medium text-primary transition hover:underline">
|
||||
install-word-addins.ps1</Link>
|
||||
แล้วเรียกคำสั่งด้านล่างเพื่อติดตั้ง<br />
|
||||
<br />
|
||||
<b className="whitespace-nowrap">Unblock-File .\install-word-addins.ps1</b><br />
|
||||
<b className="whitespace-nowrap">Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force</b><br />
|
||||
<b className="whitespace-nowrap">.\install-word-addins.ps1 -Install</b><br /></li>
|
||||
</ol>
|
||||
<br />
|
||||
<b className="whitespace-nowrap">Unblock-File .\install-word-addins.ps1</b>
|
||||
<b className="whitespace-nowrap">Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force</b>
|
||||
<b className="whitespace-nowrap">.\install-word-addins.ps1 -Install</b>
|
||||
|
||||
<b>หมายเหตุ:</b>
|
||||
<i>
|
||||
Add-ins เป็นรุ่นใหม่(Office.js) มีความเป็นไปได้ที่จะรองรับรุ่น Desktop(Windows/Mac), Web และ iPad
|
||||
ด้วยข้อกำหนดของ TOR ให้รองรับ Word 2019(Desktop) บนวินโดว์ 10 เป็นขั้นต่ำ ทำให้ถูกจำกัดที่ WordApi 1.3 เท่านั้น
|
||||
ฟึเจอร์บางอย่างบน Add-ins จะถูกจำกัดตามความสามารถตามรุ่นของ WordApi การทดสอบต่างๆตามที่กำหนดใน TOR
|
||||
<br />
|
||||
สำหรับ Microsoft Office เวอร์ชันขายขาดแบบเก่า (เช่น Office 2016, 2019 หรือ 2021) จะไม่มีปุ่มอัปโหลดไฟล์ XML
|
||||
บนหน้าต่างเมนูโดยตรงเหมือน Microsoft 365 หากต้องการติดตั้งไฟล์ manifest.xml ในรุ่นดังกล่าว
|
||||
จำเป็นต้องใช้วิธีแชร์โฟลเดอร์เครือข่าย (Shared Folder Sideloading)
|
||||
<br />
|
||||
</i>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
# Dev dependencies ของ judes-note — รันด้วย `docker compose up -d` (ทั้งคู่)
|
||||
# หรือ `docker compose up -d minio` (ถ้าจะรัน DB แบบเดิมด้วย docker run)
|
||||
#
|
||||
# service `db` ใช้ชื่อ container/วอลุ่มเดียวกับคำสั่ง docker run เดิมใน README
|
||||
# (วอลุ่ม pin ชื่อไม่มี prefix ของ compose ผ่าน `name:` ด้านล่าง) — ถ้ามี container
|
||||
# judes-note-db เก่ารันอยู่ (สร้างด้วย docker run) ให้ `docker rm -f judes-note-db`
|
||||
# ก่อน แล้ว compose จะต่อวอลุ่ม judes-note-db-data เดิมได้เลย ข้อมูลไม่หาย
|
||||
# สำหรับตอนพัฒนาแอป (npm run dev) เรียกใช้แค่ db minio
|
||||
# docker compose up -d db minio
|
||||
# สำหรับทดสอบ แอปบน container
|
||||
# docker compose build
|
||||
# docker compose up -d
|
||||
# ลบ container และ volume
|
||||
# docker compose down -v
|
||||
|
||||
services:
|
||||
docedit:
|
||||
build:
|
||||
|
|
@ -12,6 +13,7 @@ services:
|
|||
dockerfile: docker/web.Dockerfile
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Asia/Bangkok
|
||||
- SECRET=${SECRET}
|
||||
- PRIVATE_KEY_HEX=${PRIVATE_KEY_HEX}
|
||||
- PUBLIC_KEY_HEX=${PUBLIC_KEY_HEX}
|
||||
|
|
@ -21,9 +23,10 @@ services:
|
|||
- DATABASE_URL=postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@db:5432/note
|
||||
### สำหรับโค้ดตัวอย่างระบบนอกเรียกเข้ามาไม่ได้ใช้ในระบบนี้ ห้ามเอาไช้
|
||||
- DOCEDIT_BASE_URL=http://docedit:3000/docedit
|
||||
## Optional
|
||||
- TICKET_SEC=300
|
||||
- DOCX_WORKERS=4
|
||||
|
||||
- NOTE_SSO_DEV_MINT=1 ## dev
|
||||
|
||||
ports:
|
||||
- "3000:3000"
|
||||
|
|
@ -33,7 +36,6 @@ services:
|
|||
minio:
|
||||
condition: service_healthy
|
||||
|
||||
|
||||
db:
|
||||
image: postgres:18-alpine
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue