ข้ามไปยังเนื้อหาหลัก

Docker on Windows

ในคู่มือนี้ คุณจะได้เรียนรู้วิธีปรับใช้ MyEMS ด้วย Docker บนระบบ Windows

ข้อกำหนดเบื้องต้น

  • ได้ติดตั้ง docker และ npm บนเครื่องโฮสต์แล้ว
  • ได้ติดตั้งเซิร์ฟเวอร์ MySQL แล้ว
  • สามารถเชื่อมต่อฐานข้อมูล MySQL จากเครื่องโฮสต์ที่ทำงานด้วย Docker Engine ได้
  • ข้อกำหนดด้านฮาร์ดแวร์: หน่วยความจำ (RAM) อย่างน้อย 4GB พื้นที่จัดเก็บอย่างน้อย 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@myems.io

รหัสผ่าน:

!MyEMS1

Troubleshooting (การแก้ปัญหา)

วิธีแก้ปัญหาการหมดเวลา (timeout) ในการดึงอิมเมจ (image pull)

เนื่องจากปัญหาเครือข่ายของ ISP คุณอาจประสบปัญหาการดึงอิมเมจช้าลง คุณสามารถใช้บริการเร่งความเร็วจากบุคคลที่สามได้