Docker on Windows
ในคู่มือนี้ คุณจะได้เรียนรู้วิธีปรับใช้ MyEMS ด้วย Docker บนระบบ Windows
ข้อกำหนดเบื้องต้น
- ได้ติดตั้ง docker และ npm บนเครื่องโฮสต์แล้ว
- ได้ติดตั้งเซิร์ฟเวอร์ MySQL แล้ว
- สามารถเชื่อมต่อฐานข้อมูล MySQL จากเครื่องโฮสต์ที่ทำงานด้วย Docker Engine ได้
- ข้อกำหนดด้านฮาร์ดแวร์: หน่วยความจำ (RAM) อย่างน้อย 8GB พื้นที่จัดเก็บอย่างน้อย 20GB (สำหรับฐานข้อมูลและคอนเทนเนอร์ Docker)
Clone source code:
cd ~
git clone https://github.com/myems/myems
Step 1 Database
ดูที่ Database
Step 2 myems-api
ในส่วนนี้ คุณจะติดตั้ง myems-api บน Docker
- คัดลอกโค้ดต้นฉบับไปยังไดเรกทอรีรูท
cp -r myems/myems-api c:\
cd c:\myems-api
- สร้างไฟล์ .env จากไฟล์ example.env
แทนที่ 127.0.0.1 ด้วยที่อยู่ IP ของเครื่องโฮสต์ (HOST) จริงด้วยตนเอง
cp example.env .env
- สร้างอิมเมจ (Image) จากโค้ดต้นฉบับ
docker build -t myems/myems-api .
หากต้องการสร้างอิมเมจสำหรับหลายแพลตฟอร์ม ไม่ใช่แค่สถาปัตยกรรมและระบบปฏิบัติการที่ผู้ใช้เรียกใช้การสร้างอิมเมจอยู่ คุณสามารถใช้ buildx และตั้งค่าฟล래็ก --platform เพื่อระบุแพลตฟอร์มเป้าหมายสำหรับผลลัพธ์การสร้าง (ตัวอย่าง: linux/amd64, linux/arm64, หรือ darwin/amd64)
docker buildx build --platform=linux/amd64 -t myems/myems-api .
- เรียกใช้คอนเทนเนอร์ Docker
บนเครื่องโฮสต์ สร้างโฟลเดอร์ที่ c:\myems-upload และทำ bind-mount ไปยังคอนเทนเนอร์ และยังทำ bind-mount ไฟล์ .env ไปยังคอนเทนเนอร์ด้วย:
docker run -d -p 8000:8000 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\myems-api\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-api myems/myems-api
-
-d : เรียกใช้คอนเทนเนอร์ในเบื้องหลังและพิมพ์ ID ของคอนเทนเนอร์
-
-p : ประกาศพอร์ตของคอนเทนเนอร์ไปยังเครื่องโฮสต์ 8000:8000 (Host:Container) จะผูกพอร์ต 8000 (ด้านขวา) ของคอนเทนเนอร์ กับพอร์ต TCP 8000 (ด้านซ้าย) ของเครื่องโฮสต์
-
-v : หากคุณใช้ -v หรือ --volume เพื่อทำ bind-mount ไฟล์หรือไดเรกทอรีที่ยังไม่มีอยู่บน Docker host -v จะสร้าง endpoint สำหรับคุณโดยอัตโนมัติ และจะถูกสร้างเป็นไดเรกทอรีเสมอ ตัวเลือก ro (หากมี) จะทำให้ bind mount ถูกเมาท์เข้าสู่คอนเทนเนอร์ในโหมดอ่าน-only สำหรับเวอร์ชัน v4.7.0 หรือเวอร์ชันก่อนหน้านั้น ให้ใช้ '/code/.env' แทน '/app/.env'
-
--log-opt max-size=2m : ขนาดสูงสุดของล็อกก่อนที่จะถูกหมุน (roll) เป็นจำนวนเต็มบวกพร้อมตัวแก้ไขที่แสดงหน่วยวัด (k, m, หรือ g)
-
--log-opt max-file=2 : จำนวนสูงสุดของไฟล์ล็อกที่สามารถมีอยู่ได้ หากการหมุนล็อกสร้างไฟล์เกินขีดจำกัด ไฟล์ที่เก่าที่สุดจะถูกลบออก เป็นจำนวนเต็มบวก
-
--restart : นโยบายการรีสตาร์ทที่จะใช้เมื่อคอนเทนเนอร์ออกจากระบบ
-
--name : กำหนดชื่อให้คอนเทนเนอร์
เส้นทางสัมบูรณ์ก่อนเครื่องหมายคอลอน (:) คือเส้นทางบนเครื่องโฮสต์ ซึ่งอาจแตก ต่างกันไปตามระบบของคุณ เส้นทางสัมบูรณ์หลังเครื่องหมายคอลอน (:) คือเส้นทางบนคอนเทนเนอร์ ซึ่งไม่สามารถเปลี่ยนแปลงได้ โดยการส่ง .env เป็นพารามิเตอร์ bind-mount คุณสามารถเปลี่ยนค่าการกำหนดค่าในภายหลังได้ หากคุณเปลี่ยนไฟล์ .env ให้รีสตาร์ทคอนเทนเนอร์เพื่อให้การเปลี่ยนแปลงมีผล
หากคุณต้องการย้ายอิมเมจไปยังคอมพิวเตอร์อื่น
- ส่งออกอิมเมจเป็นไฟล์ tarball
docker save --output myems-api.tar myems/myems-api
- คัดลอกไฟล์ tarball ไปยังคอมพิวเตอร์อื่น แล้วโหลดอิมเมจจากไฟล์ tarball
docker load --input .\myems-api.tar
Step 3 myems-admin
ในส่วนนี้ คุณจะติดตั้ง myems-admin บน Docker
- คัดลอกโค้ดต้นฉบับไปยังไดเรกทอรีรูท
cp -r myems/myems-admin c:\
cd c:\myems-admin
แทนที่ 127.0.0.1:8000 ในไฟล์ nginx.conf ด้วยที่อยู่ IP และพอร์ตจริงของ myems-api บน เครื่องโฮสต์ (HOST) ด้วยตนเอง
notepad nginx.conf
proxy_pass http://127.0.0.1:8000/;
- สร้างอิมเมจ (Image) จากโค้ดต้นฉบับ
docker build -t myems/myems-admin .
หากต้องการสร้างอิมเมจสำหรับหลายแพลตฟอร์ม ไม่ใช ่แค่สถาปัตยกรรมและระบบปฏิบัติการที่ผู้ใช้เรียกใช้การสร้างอิมเมจอยู่ คุณสามารถใช้ buildx และตั้งค่าฟล래็ก --platform เพื่อระบุแพลตฟอร์มเป้าหมายสำหรับผลลัพธ์การสร้าง (ตัวอย่าง: linux/amd64, linux/arm64, หรือ darwin/amd64)
docker buildx build --platform=linux/amd64 -t myems/myems-admin .
- เรียกใช้คอนเทนเนอร์ Docker
บนเครื่องโฮสต์ สร้างโฟลเดอร์ที่ c:\myems-upload และทำ bind-mount ไปยังคอนเทนเนอร์ และยังทำ bind-mount ไฟล์ nginx.conf ไปยังคอนเทนเนอร์ด้วย: พารามิเตอร์ -v สำหรับโฟลเดอร์ upload ต้องเหมือนกับที่ใช้ใน myems-api
docker run -d -p 8001:8001 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\myems-admin/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-admin myems/myems-admin
-
-d : เรียกใช้คอนเทนเนอร์ในเบื้องหลังและพิมพ์ ID ของคอนเทนเนอร์
-
-p : ประกาศพอร์ตของคอนเทนเนอร์ไปยังเครื่องโฮสต์ 8001:8001 (Host:Container) จะผูกพอร์ต 8001 (ด้านขวา) ของคอนเทนเนอร์ กับพอร์ต TCP 8001 (ด้านซ้าย) ของเครื่องโฮสต์
-
-v : หากคุณใช้ -v หรือ --volume เพื่อทำ bind-mount ไฟล์หรือไดเรกทอรีที่ยังไม่มีอยู่บน Docker host -v จะสร้าง endpoint สำหรับคุณโดยอัตโนมัติ และจะถูกสร้างเป็นไดเรกทอรีเสมอ ตัวเลือก ro (หากมี) จะทำให้ bind mount ถูกเมาท์เข้าสู่คอนเทนเนอร์ในโหมดอ่าน-only สำหรับเวอร์ชัน v4.7.0 หรือเวอร์ชันก่อนหน้านั้น ให้ใช้ '/code/.env' แทน '/app/.env'
-
--log-opt max-size=2m : ขนาดสูงสุดของล็อกก่อนที่จะถูกหมุน (roll) เป็นจำนวนเต็มบวกพร้อมตัวแก้ไขที่แสดงหน่วยวัด (k, m, หรือ g)
-
--log-opt max-file=2 : จำนวนสูงสุดของไฟล์ ล็อกที่สามารถมีอยู่ได้ หากการหมุนล็อกสร้างไฟล์เกินขีดจำกัด ไฟล์ที่เก่าที่สุดจะถูกลบออก เป็นจำนวนเต็มบวก
-
--restart : นโยบายการรีสตาร์ทที่จะใช้เมื่อคอนเทนเนอร์ออกจากระบบ
-
--name : กำหนดชื่อให้คอนเทนเนอร์
หากคุณต้องการย้ายอิมเมจไปยังคอมพิวเตอร์อื่น
- ส่งออกอิมเมจเป็นไฟล์ tarball
docker save --output myems-admin.tar myems/myems-admin
- คัดลอกไฟล์ tarball ไปยังคอมพิวเตอร์อื่น แล้วโหลดอิมเมจจากไฟล์ tarball
docker load --input .\myems-admin.tar
Step 4 myems-modbus-tcp
ในส่วนนี้ คุณจะติดตั้ง myems-modbus-tcp บน Docker
- คัดลอกโค้ดต้นฉบับไปยังไดเรกทอรีรูท
cp -r myems/myems-modbus-tcp c:\
cd c:\myems-modbus-tcp
- สร้างไฟล์ .env จากไฟล์ example.env
แทนที่ 127.0.0.1 ด้วยที่อยู่ IP ของเครื่องโฮสต์ (HOST) จริงด้วยตนเอง
cp example.env .env
- สร้างอิมเมจ (Image) จากโค้ดต้นฉบับ
docker build -t myems/myems-modbus-tcp .
หากต้องการสร้างอิมเมจสำหรับหลายแพลตฟอร์ม ไม่ใช่แค่สถาปัตยกรรมและระบบปฏิบัติการที่ผู้ใช้เรียกใช้การสร้างอิมเมจอยู่ คุณสามารถใช้ buildx และตั้งค่าฟล래็ก --platform เพื่อระบุแพลตฟอร์มเป้าหมายสำหรับผลลัพธ์การสร้าง (ตัวอย่าง: linux/amd64, linux/arm64, หรือ darwin/amd64)
docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- เรียกใช้คอนเทนเนอร์ Docker (รันในฐานะ Administrator)
docker run -d -v c:\myems-modbus-tcp\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-modbus-tcp myems/myems-modbus-tcp
-
-d : เรียกใช้คอนเทนเนอร์ในเบื้องหลังและพิมพ์ ID ของคอนเทนเนอร์
-
-v : หากคุณใช้ -v หรือ --volume เพื่อทำ bind-mount ไฟล์หรือไดเรกทอรีที่ยังไม่มีอยู่บน Docker host -v จะสร้าง endpoint สำหรับคุณโดยอัตโนมัติ และจะถูกสร้างเป็นไดเรกทอรีเสมอ ตัวเลือก ro (หากมี) จะทำให้ bind mount ถูกเมาท์เข้าสู่คอนเทนเนอร์ในโหมดอ่าน-only สำหรับเวอร์ชัน v4.7.0 หรือเวอร์ชันก่อนหน้านั้น ให้ใช้ '/code/.env' แทน '/app/.env'
-
--log-opt max-size=2m : ขนาดสูงสุดของล็อกก่อนที่จะถูกหมุน (roll) เป็นจำนวนเต็มบวกพร้อมตัวแก้ไขที่แสดงหน่วยวัด (k, m, หรือ g)
-
--log-opt max-file=2 : จำนวนสูงสุดของไฟล์ล็อกที่สามารถมีอยู่ได้ หากการหมุนล็อกสร้างไฟล์เกินขีดจำกัด ไฟล์ที่เก่าที่สุดจะถูกลบออก เป็นจำนวนเต็มบวก
-
--restart : นโยบายการรีสตาร์ทที่จะใช้เมื่อคอนเทนเนอร์ออกจากระบบ
-
--name : กำหนดชื่อให้คอนเทนเนอร์
เส้นทางสัมบูรณ์ก่อนเครื่องหมายคอลอน (:) คือเส้นทางบนเครื่องโฮสต์ ซึ่งอาจแตกต่างกันไปตามระบบของคุณ เส้นทางสัมบูรณ์หลังเครื่องหมายคอลอน (:) คือเส้นทางบนคอนเทนเนอร์ ซึ่งไม่สามารถเปลี่ยนแปลงได้ โดยการส่ง .env เป็นพารามิเตอร์ bind-mount คุณสามารถเปลี่ยนค่าการกำหนดค่าในภายหลังได้ หากคุณเปลี่ยนไฟล์ .env ให้รีสตาร์ทคอนเทนเนอร์เพื่อให้การเปลี่ยนแปลงมีผล
- ย้ายคอนเทนเนอร์ Docker ไปยังคอมพิวเตอร์อื่น
หากต้องการย้ายคอนเทนเนอร์ไปยังคอมพิวเตอร์อื่น
- ส่งออกอิมเมจเป็นไฟล์ tarball
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- คัดลอกไฟล์ tarball ไปยังคอมพิวเตอร์อื่น แล้วโหลดอิมเมจจากไฟล์ tarball
docker load --input .\myems-modbus-tcp.tar
Step 5 myems-cleaning
ในส่วนนี้ คุณจะติดตั้ง myems-cleaning บน Docker
- คัดลอกโค้ดต้นฉบับไปยังไดเรกทอรีรูท
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
- สร้างไฟล์ .env จากไฟล์ example.env
แทนที่ 127.0.0.1 ด้วยที่อยู่ IP ของเครื่องโฮสต์ (HOST) จริงด้วยตนเอง
cp example.env .env
- สร้างอิมเมจ (Image) จากโค้ดต้นฉบับ
docker build -t myems/myems-cleaning .
หากต้องการสร้างอิมเมจสำหรับหลายแพลตฟอร์ม ไม่ใช่แค่สถาปัตยกรรมและระบบปฏิบัติการที่ผู้ใช้เรียกใช้การสร้างอิมเมจอยู่ คุณสามารถใช้ buildx และตั้งค่าฟล래็ก --platform เพื่อระบุแพลตฟอร์มเป้าหมายสำหรับผลลัพธ์การสร้าง (ตัวอย่าง: linux/amd64, linux/arm64, หรือ darwin/amd64)
docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- เรียกใช้คอนเทนเนอร์ Docker (รันในฐานะ Administrator)
docker run -d -v c:\myems-cleaning\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-cleaning myems/myems-cleaning
-
-d : เรียกใช้คอนเทนเนอร์ในเบื้องหลังและพิมพ์ ID ของคอนเทนเนอร์
-
-v : หากคุณใช้ -v หรือ --volume เพื่อทำ bind-mount ไฟล์หรือไดเรกทอรีที่ยังไม่มีอยู่บน Docker host -v จะสร้าง endpoint สำหรับคุณโดยอัตโนมัติ และจะถูกสร้างเป็นไดเรกทอรีเสมอ ตัวเลือก ro (หากมี) จะทำให้ bind mount ถูกเมาท์เข้าสู่คอนเทนเนอร์ในโหมดอ่าน-only สำหรับเวอร์ชัน v4.7.0 หรือเวอร์ชันก่อนหน้านั้น ให้ใช้ '/code/.env' แทน '/app/.env'
-
--log-opt max-size=2m : ขนาดสูงสุดของล็อกก่อนที่จะถูกหมุ น (roll) เป็นจำนวนเต็มบวกพร้อมตัวแก้ไขที่แสดงหน่วยวัด (k, m, หรือ g)
-
--log-opt max-file=2 : จำนวนสูงสุดของไฟล์ล็อกที่สามารถมีอยู่ได้ หากการหมุนล็อกสร้างไฟล์เกินขีดจำกัด ไฟล์ที่เก่าที่สุดจะถูกลบออก เป็นจำนวนเต็มบวก
-
--restart : นโยบายการรีสตาร์ทที่จะใช้เมื่อคอนเทนเนอร์ออกจากระบบ
-
--name : กำหนดชื่อให้คอนเทนเนอร์
เส้นทางสัมบูรณ์ก่อนเครื่องหมายคอลอน (:) คือเส้นทางบนเครื่องโฮสต์ ซึ่งอาจแตกต่างกันไปตามระบบของคุณ เส้นทางสัมบูรณ์หลังเครื่องหมายคอลอน (:) คือเส้นทางบนคอนเทนเนอร์ ซึ่งไม่สามารถเปลี่ยนแปลงได้ โดยการส่ง .env เป็นพารามิเตอร์ bind-mount คุณสามารถเปลี่ยนค่าการกำหนดค่าในภายหลังได้ หากคุณเปลี่ยนไฟล์ .env ให้รีสตาร์ทคอนเทนเนอร์เพื่อให้การเปลี่ยนแปลงมีผล
- ย้ายคอนเทนเนอร์ Docker ไปยังคอมพิวเตอร์อื่น
หากต้องการย้ายคอนเทนเนอร์ไปยังคอมพิวเตอร์อื่น
- ส่งออกอิมเมจเป็นไฟล์ tarball
docker save --output myems-cleaning.tar myems/myems-cleaning
- คัดลอกไฟล์ tarball ไปยังคอมพิวเตอร์อื่น แล้วโหลดอิมเมจจากไฟล์ tarball
docker load --input .\myems-cleaning.tar
Step 6 myems-normalization
ในส่วนนี้ คุณจะติดตั้ง myems-normalization บน Docker
- คัดลอกโค้ดต้นฉบับไปยังไดเรกทอรีรูท
cp -r myems/myems-normalization c:\
cd c:\myems-normalization
- สร้างไฟล์ .env จากไฟล์ example.env
แทนที่ 127.0.0.1 ด้วยที่อยู่ IP ของเครื่องโฮสต์ (HOST) จริงด้วยตนเอง
cp example.env .env
- สร้างอิมเมจ (Image) จากโค้ดต้นฉบับ
docker build -t myems/myems-normalization .
หากต้องการสร้างอิมเมจสำหรับหลายแพลตฟอร์ม ไม่ใช่แค่สถาปัตยกรรมและระบบปฏิบัติการที่ผู้ใช้เรียกใช้การสร้างอิมเมจอยู่ คุณสามารถใช้ buildx และตั้งค่าฟล래็ก --platform เพื่อระบุแพลตฟอร์มเป้าหมายสำหรับผลลัพธ์การสร้าง (ตัวอย่าง: linux/amd64, linux/arm64, หรือ darwin/amd64)
docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
- เรียกใช้คอนเทนเนอร์ Docker (รันในฐานะ Administrator)
docker run -d -v c:\myems-normalization\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-normalization myems/myems-normalization
-
-d : เรียกใช้คอนเทนเนอร์ในเบื้องหลังและพิมพ์ ID ของคอนเทนเนอร์
-
-v : หากคุณใช้ -v หรือ --volume เพื่อทำ bind-mount ไฟล์หรือไดเรกทอรีที่ยังไม่มีอยู่บน Docker host -v จะสร้าง endpoint สำหรับคุณโดยอัตโนมัติ และจะถูกสร้างเป็นไดเรกทอรีเสมอ ตัวเลือก ro (หากมี) จะทำให้ bind mount ถูกเมาท์เข้าสู่คอนเทนเนอร์ในโหมดอ่าน-only สำหรับเวอร์ชัน v4.7.0 หรือเวอร์ชันก่อนหน้านั้น ให้ใช้ '/code/.env' แทน '/app/.env'
-
--log-opt max-size=2m : ขนาดสูงสุดของล็อกก่อนที่จะถูกหมุน (roll) เป็นจำนวนเต็มบวกพร้อมตัวแก้ไขที่แสดงหน่วยวัด (k, m, หรือ g)
-
--log-opt max-file=2 : จำนวนสูงสุดของไฟล ์ล็อกที่สามารถมีอยู่ได้ หากการหมุนล็อกสร้างไฟล์เกินขีดจำกัด ไฟล์ที่เก่าที่สุดจะถูกลบออก เป็นจำนวนเต็มบวก
-
--restart : นโยบายการรีสตาร์ทที่จะใช้เมื่อคอนเทนเนอร์ออกจากระบบ
-
--name : กำหนดชื่อให้คอนเทนเนอร์
เส้นทางสัมบูรณ์ก่อนเครื่องหมายคอลอน (:) คือเส้นทางบนเครื่องโฮสต์ ซึ่งอาจแตกต่างกันไปตามระบบของคุณ เส้นทางสัมบูรณ์หลังเครื่องหมายคอลอน (:) คือเส้นทางบนคอนเทนเนอร์ ซึ่งไม่สามารถเปลี่ยนแปลงได้ โดยการส่ง .env เป็นพารามิเตอร์ bind-mount คุณสามารถเปลี่ยนค่าการกำหนดค่าในภายหลังได้ หากคุณเปลี่ยนไฟล์ .env ให้รีสตาร์ทคอนเทนเนอร์เพื่อให้การเปลี่ยนแปลงมีผล
- ย้ายคอนเทนเนอร์ Docker ไปยังคอมพิวเตอร์อื่น
หากต้องการย้ายคอนเทนเนอร์ไปยังคอมพิวเตอร์อื่น
- ส่งออกอิมเมจเป็นไฟล์ tarball
docker save --output myems-normalization.tar myems/myems-normalization
- คัดลอกไฟล์ tarball ไปยังคอมพิวเตอร์อื่น แล้วโหลดอิมเมจจากไฟล์ tarball
docker load --input .\myems-normalization.tar
Step 7 myems-aggregation
ในส่วนนี้ คุณจะติดตั้ง myems-aggregation บน Docker
- คัดลอกโค้ดต้นฉบับไปยังไดเรกทอรีรูท
cp -r myems/myems-aggregation c:\
cd c:\myems-aggregation
- สร้างไฟล์ .env จากไฟล์ example.env
แทนที่ 127.0.0.1 ด้วยที่อยู่ IP ของเครื่องโฮสต์ (HOST) จริงด้วยตนเอง
cp example.env .env
- สร้างอิมเมจ (Image) จากโค้ดต้นฉบับ
docker build -t myems/myems-aggregation .
หากต้องการสร้างอิมเมจสำหรับหลายแพลตฟอร์ม ไม่ใช่แค่สถาปัตยกรรมและระบบปฏิบัติการที่ผู้ใช้เรียกใช้การสร้างอิมเมจอยู่ คุณสามารถใช้ buildx และตั้งค่าฟล래็ก --platform เพื่อระบุแพลตฟอร์มเป้าหมายสำหรับผลลัพธ์การสร้าง (ตัวอย่าง: linux/amd64, linux/arm64, หรือ darwin/amd64)
docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
- เรียกใช้คอนเทนเนอร์ Docker (รันในฐานะ Administrator)
docker run -d -v c:\myems-aggregation\.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-aggregation myems/myems-aggregation
-
-d : เรียกใช้คอนเทนเนอร์ในเบื้องหลังและพิมพ์ ID ของคอนเทนเนอร์
-
-v : หากคุณใช้ -v หรือ --volume เพื่อทำ bind-mount ไฟล์หรือไดเรกทอรีที่ยังไม่มีอยู่บน Docker host -v จะสร้าง endpoint สำหรับคุณโดยอัตโนมัติ และจะถูกสร้างเป็นไดเรกทอรีเสมอ ตัวเลือก ro (หากมี) จะทำให้ bind mount ถูกเมาท์เข้าสู่คอนเทนเนอร์ในโหมดอ่าน-only สำหรับเวอร์ชัน v4.7.0 หรือเวอร์ชันก่อนหน้านั้น ให้ใช้ '/code/.env' แทน '/app/.env'
-
--log-opt max-size=2m : ขนาดสูงสุดของล็อกก่อนที่จะถูกหมุน (roll) เป็นจำนวนเต็มบวกพร้อมตัวแก้ไขที่แสดงหน่วยวัด (k, m, หรือ g)
-
--log-opt max-file=2 : จำนวนสูงสุดของไฟล์ล็อกที่สามารถมีอยู่ได้ หากการหมุนล็อกสร้างไฟล์เกินขีดจำกัด ไฟล์ที่เก่าที่สุดจะถูกลบออก เป็นจำน วนเต็มบวก
-
--restart : นโยบายการรีสตาร์ทที่จะใช้เมื่อคอนเทนเนอร์ออกจากระบบ
-
--name : กำหนดชื่อให้คอนเทนเนอร์
เส้นทางสัมบูรณ์ก่อนเครื่องหมายคอลอน (:) คือเส้นทางบนเครื่องโฮสต์ ซึ่งอาจแตกต่างกันไปตามระบบของคุณ เส้นทางสัมบูรณ์หลังเครื่องหมายคอลอน (:) คือเส้นทางบนคอนเทนเนอร์ ซึ่งไม่สามารถเปลี่ยนแปลงได้ โดยการส่ง .env เป็นพารามิเตอร์ bind-mount คุณสามารถเปลี่ยนค่าการกำหนดค่าในภายหลังได้ หากคุณเปลี่ยนไฟล์ .env ให้รีสตาร์ทคอนเทนเนอร์เพื่อให้การเปลี่ยนแปลงมีผล
-
ย้ายคอนเทนเนอร์ Docker ไปยังคอมพิวเตอร์อื่น
-
ส่งออกอิมเมจเป็นไฟล์ tarball
docker save --output myems-aggregation.tar myems/myems-aggregation
- คัดลอกไฟล์ tarball ไปยังคอมพิวเตอร์อื่น แล้วโหลดอิมเมจจากไฟล์ tarball
docker load --input .\myems-aggregation.tar
Step 8 myems-web
ในส่วนนี้ คุณจะติดตั้ง myems-web บน Docker
- แก้ไขไฟล์ config.js:
รับ mapboxToken ที่ https://mapbox.com และตั้ง showOnlineMap เป็น true หากคุณต้องการปิดฟีเจอร์แผนที่ออนไลน์ ให้ตั้ง showOnlineMap เป็น false
cd myems/myems-web
notepad src/config.js
แทนที่ 127.0.0.1:8000 ในไฟล์ nginx.conf ด้วยที่อยู่ IP และพอร์ตจริงของ myems-api บน เครื่องโฮสต์ (HOST)
cd myems/myems-web
notepad nginx.conf
- คัดลอกโค้ดต้นฉบับไปยังไดเรกทอรีรูท
cp -r myems/myems-web c:\
cd c:\myems-web
คุณสามารถละเว้นคำสั่ง 'npm run build' ในส่วนนี้ได้อย่างปลอดภัย เนื่องจากมันถูกรวมเข้าไปใน Dockerfile แล้ว
- สร้างอิมเมจ (Image) จากโค้ดต้นฉบับ
docker build -t myems/myems-web .
docker image prune -f
หากต้องการสร้างอิมเมจสำหรับหลายแพลตฟอร์ม ไม่ใช่แค่สถาปัตยกรรมและระบบปฏิบัติการที่ผู้ใช้เรียกใช้การสร้างอิมเมจอยู่ คุณสามารถใช้ buildx และตั้งค่าฟล래็ก --platform เพื่อระบุแพลตฟอร์มเป้าหมายสำหรับผลลัพธ์การสร้าง (ตัวอย่าง: linux/amd64, linux/arm64, หรือ darwin/amd64)
docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
- เรียกใช้คอนเทนเนอร์ Docker
บนเครื่องโฮสต์ ทำ bind-mount ไฟล์ nginx.conf
docker run -d -p 80:80 -v c:\myems-web/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-web myems/myems-web
-
-d : เรียกใช้คอนเทนเนอร์ในเบื้องหลังและพิมพ์ ID ของคอนเทนเนอร์
-
-p : ประกาศพอร์ตของคอนเทนเนอร์ไปยังเครื่องโฮสต์ 80:80 (Host:Container) จะผูกพอร์ต 80 (ด้านขวา) ของคอนเทนเนอร์ กับพอร์ต TCP 80 (ด้านซ้าย) ของเครื่องโฮสต์
-
-v : หากคุณใช้ -v หรือ --volume เพื่อทำ bind-mount ไฟล์หรือไดเรกทอรีที่ยังไม่มีอยู่บน Docker host -v จะสร้าง endpoint สำหรับคุณโดยอัตโนมัติ และจะถูกสร้างเป็นไดเรกทอรีเสมอ ตัวเลือก ro (หากมี) จะทำให้ bind mount ถูกเมาท์เข้าสู่คอนเทนเนอร์ในโหมดอ่าน-only สำหรับเวอร์ชัน v4.7.0 หรือเวอร์ชันก่อนหน้านั้น ให้ใช้ '/code/.env' แทน '/app/.env'
-
--log-opt max-size=2m : ขนาดสูงสุดของล็อกก่อนที่จะถูกหมุน (roll) เป็นจำนวนเต็มบวกพร้อมตัวแก้ไขที่แสดงหน่วยวัด (k, m, หรือ g)
-
--log-opt max-file=2 : จำนวนสูงสุดของไฟล์ล็อกที่สามารถมีอยู่ได้ หากการหมุนล็อกสร้างไฟล์เกินขีดจำกัด ไฟล์ที่เก่าที่สุดจะถูกลบออก เป็นจำนวนเต็มบวก
-
--restart : นโยบายการรีสตาร์ทที่จะใช้เมื่อคอนเทนเนอร์ออกจากระบบ
-
--name : กำหนดชื่อให้คอนเทนเนอร์
หากคุณต้องการย้ายอิมเมจไปยังคอมพิวเตอร์อื่น
- ส่งออกอิมเมจเป็นไฟล์ tarball
docker save --output myems-web.tar myems/myems-web
- คัดลอกไฟล์ tarball ไปยังคอมพิวเตอร์อื่น แล้วโหลดอิมเมจจากไฟล์ tarball
docker load --input .\myems-web.tar
Post-installation (หลังติดตั้ง)
ยินดีด้วย! คุณสามารถเข้าสู่ระบบ MyEMS Admin UI และ Web UI ได้แล้ว
พอร์ตเริ่มต้น
MyEMS Web UI: 80
MyEMS API: 8000
MyEMS Admin UI: 8001
สมมติว่าที่อยู่เซิร์ฟเวอร์คือ 192.168.1.8 (แทนที่ด้วยที่อยู่เซิร์ฟเวอร์จริง) เข้าถึง MyEMS Web UI ที่ http://192.168.1.8 (80 สามารถละได้) เข้าถึง MyEMS Admin UI ที่ http://192.168.1.8:8001
รหัสผ่านเริ่มต้น
MyEMS Admin UI
ชื่อผู้ใช้:
administrator
รหัสผ่าน:
!MyEMS1
MyEMS Web UI
ชื่อผู้ใช้:
administrator
รหัสผ่าน:
!MyEMS1
Troubleshooting (การแก้ปัญหา)
เนื่องจากปัญหาเครือข่ายของ ISP คุณอาจประสบปัญหาการดึงอิมเมจช้าลง คุณสามารถใช้บริการเร่งความเร็วจากบุคคลที่สามได้