Đi đến nội dung chính

Podman trên Linux

Trong hướng dẫn này, bạn sẽ triển khai MyEMS với Podman trên Linux.

Điều kiện tiên quyết

  • Đã cài đặt podman, npm trên máy chủ.
  • Đã cài đặt máy chủ MySQL.
  • Cơ sở dữ liệu MySQL có thể được kết nối từ máy chủ mà Podman Engine đang chạy.
Cảnh báo
  • Khuyến nghị sử dụng quyền root để thực thi các lệnh podman.

  • Sau khi cài đặt podman, sử dụng lệnh systemctl status podman-restart.service để kiểm tra xem các container đã được cấu hình khởi động tự động và chính sách chưa. Nếu hiển thị Unit not found, có nghĩa là container không thể khởi động tự động.

Bước 1 Cơ sở dữ liệu

Xem Cơ sở dữ liệu

Bước 2 myems-api

Trong phần này, bạn sẽ cài đặt myems-api trên Podman.

  • Sao chép mã nguồn vào thư mục gốc

    cp -r myems/myems-api /
    cd /myems-api
  • Tạo file .env dựa trên file example.env

Cảnh báo

Thay thế thủ công 127.0.0.1 bằng địa chỉ IP HOST thực tế.

cp example.env .env
  • Xây dựng Image từ Mã nguồn
podman build -t myems/myems-api .

Để xây dựng cho nhiều nền tảng và không chỉ cho kiến trúc và hệ điều hành mà người dùng gọi lệnh build đang chạy. Bạn có thể sử dụng buildx và đặt cờ --platform để chỉ định nền tảng mục tiêu cho đầu ra build, (ví dụ: linux/amd64, linux/arm64 hoặc darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-api .
  • Chạy một container Podman

Trên máy chủ, tạo thư mục chia sẻ file upload:

mkdir /myems-upload

Tạo một container, bind-mount thư mục chia sẻ vào container và đồng thời bind-mount file .env vào container:

podman run -d -p 8000:8000 -v /myems-upload:/var/www/myems-admin/upload -v /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 Chạy container trong nền và in ID container

  • -p Xuất bản cổng của container ra máy chủ, 8000:8000 (Máy chủ:Container) liên kết cổng 8000 (bên phải) của container với cổng TCP 8000 (bên trái) của máy chủ.

  • -v Nếu bạn sử dụng -v hoặc --volume để bind-mount một file hoặc thư mục chưa tồn tại trên máy chủ Podman, -v sẽ tạo endpoint cho bạn. Nó luôn được tạo dưới dạng thư mục. Tùy chọn ro, nếu có, khiến bind mount được mount vào container dưới dạng chỉ đọc. Đối với phiên bản v4.7.0 trở về trước, hãy sử dụng '/code/.env' thay vì '/app/.env'.

  • --log-opt max-size=2m Kích thước tối đa của log trước khi nó được xoay vòng. Một số nguyên dương cộng với một ký hiệu đại diện cho đơn vị đo (k, m hoặc g).

  • --log-opt max-file=2 Số lượng file log tối đa có thể tồn tại. Nếu việc xoay vòng log tạo ra các file dư thừa, file cũ nhất sẽ bị xóa. Một số nguyên dương.

  • --restart Chính sách khởi động lại áp dụng khi một container thoát

  • --name Gán tên cho container

Đường dẫn tuyệt đối trước dấu hai chấm là đường dẫn trên máy chủ và có thể thay đổi tùy hệ thống của bạn. Đường dẫn tuyệt đối sau dấu hai chấm là đường dẫn trên container và KHÔNG THỂ thay đổi. Bằng cách truyền .env làm tham số bind-mount, bạn có thể thay đổi các giá trị cấu hình sau này. Nếu bạn thay đổi file .env, hãy khởi động lại container để thay đổi có hiệu lực.

Nếu bạn muốn di chuyển image sang máy tính khác,

  • Xuất image sang file tarball
podman save --output myems-api.tar myems/myems-api
  • Sao chép file tarball sang máy tính khác, sau đó tải image từ file tarball
podman load --input .\myems-api.tar

Bước 3 myems-admin

Trong phần này, bạn sẽ cài đặt myems-admin trên Podman.

  • Sao chép mã nguồn vào thư mục gốc
cp -r myems/myems-admin /
cd /myems-admin
Cảnh báo

Thay thế thủ công 127.0.0.1:8000 trong nginx.conf bằng địa chỉ HOST và cổng thực tế của myems-api

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Xây dựng Image từ Mã nguồn
podman build -t myems/myems-admin .

Để xây dựng cho nhiều nền tảng và không chỉ cho kiến trúc và hệ điều hành mà người dùng gọi lệnh build đang chạy. Bạn có thể sử dụng buildx và đặt cờ --platform để chỉ định nền tảng mục tiêu cho đầu ra build, (ví dụ: linux/amd64, linux/arm64 hoặc darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Chạy một container Podman

Trên máy chủ, tạo thư mục chia sẻ file upload:

mkdir /myems-upload

Tạo một container, bind-mount thư mục chia sẻ file upload vào container và đồng thời bind-mount nginx.conf

podman run -d -p 8001:8001 -v /myems-upload:/var/www/myems-admin/upload -v /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 Chạy container trong nền và in ID container

  • -p Xuất bản cổng của container ra máy chủ, 8001:8001 (Máy chủ:Container) liên kết cổng 8001 (bên phải) của container với cổng TCP 8001 (bên trái) của máy chủ.

  • -v Nếu bạn sử dụng -v hoặc --volume để bind-mount một file hoặc thư mục chưa tồn tại trên máy chủ Podman, -v sẽ tạo endpoint cho bạn. Nó luôn được tạo dưới dạng thư mục. Tùy chọn ro, nếu có, khiến bind mount được mount vào container dưới dạng chỉ đọc. Đối với phiên bản v4.7.0 trở về trước, hãy sử dụng '/code/.env' thay vì '/app/.env'.

  • --log-opt max-size=2m Kích thước tối đa của log trước khi nó được xoay vòng. Một số nguyên dương cộng với một ký hiệu đại diện cho đơn vị đo (k, m hoặc g).

  • --log-opt max-file=2 Số lượng file log tối đa có thể tồn tại. Nếu việc xoay vòng log tạo ra các file dư thừa, file cũ nhất sẽ bị xóa. Một số nguyên dương.

  • --restart Chính sách khởi động lại áp dụng khi một container thoát

  • --name Gán tên cho container

Nếu bạn muốn di chuyển image sang máy tính khác,

  • Xuất image sang file tarball

    podman save --output myems-admin.tar myems/myems-admin
  • Sao chép file tarball sang máy tính khác, sau đó tải image từ file tarball

    podman load --input .\myems-admin.tar

Bước 4 myems-modbus-tcp

Trong phần này, bạn sẽ cài đặt myems-modbus-tcp trên Podman.

  • Sao chép mã nguồn vào thư mục gốc
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • Tạo file .env dựa trên file example.env
Cảnh báo

Thay thế thủ công 127.0.0.1 bằng địa chỉ IP HOST thực tế.

cp example.env .env
  • Xây dựng Image từ Mã nguồn
podman build -t myems/myems-modbus-tcp .

Để xây dựng cho nhiều nền tảng và không chỉ cho kiến trúc và hệ điều hành mà người dùng gọi lệnh build đang chạy. Bạn có thể sử dụng buildx và đặt cờ --platform để chỉ định nền tảng mục tiêu cho đầu ra build, (ví dụ: linux/amd64, linux/arm64 hoặc darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Chạy một container Podman (chạy với quyền superuser)
podman run -d -v /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 Chạy container trong nền và in ID container

  • -v Nếu bạn sử dụng -v hoặc --volume để bind-mount một file hoặc thư mục chưa tồn tại trên máy chủ Podman, -v sẽ tạo endpoint cho bạn. Nó luôn được tạo dưới dạng thư mục. Tùy chọn ro, nếu có, khiến bind mount được mount vào container dưới dạng chỉ đọc. Đối với phiên bản v4.7.0 trở về trước, hãy sử dụng '/code/.env' thay vì '/app/.env'.

  • --log-opt max-size=2m Kích thước tối đa của log trước khi nó được xoay vòng. Một số nguyên dương cộng với một ký hiệu đại diện cho đơn vị đo (k, m hoặc g).

  • --log-opt max-file=2 Số lượng file log tối đa có thể tồn tại. Nếu việc xoay vòng log tạo ra các file dư thừa, file cũ nhất sẽ bị xóa. Một số nguyên dương.

  • --restart Chính sách khởi động lại áp dụng khi một container thoát

  • --name Gán tên cho container

Đường dẫn tuyệt đối trước dấu hai chấm là đường dẫn trên máy chủ và có thể thay đổi tùy hệ thống của bạn. Đường dẫn tuyệt đối sau dấu hai chấm là đường dẫn trên container và KHÔNG THỂ thay đổi. Bằng cách truyền .env làm tham số bind-mount, bạn có thể thay đổi các giá trị cấu hình sau này. Nếu bạn thay đổi file .env, hãy khởi động lại container để thay đổi có hiệu lực.

  • Di chuyển container Podman

Để di chuyển container sang máy tính khác,

  • Xuất image sang file tarball
podman save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Sao chép file tarball sang máy tính khác, sau đó tải image từ file tarball
podman load --input .\myems-modbus-tcp.tar

Bước 5 myems-cleaning

Trong phần này, bạn sẽ cài đặt myems-cleaning trên Podman.

  • Sao chép mã nguồn vào thư mục gốc
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • Tạo file .env dựa trên file example.env
Cảnh báo

Thay thế thủ công 127.0.0.1 bằng địa chỉ IP HOST thực tế.

cp example.env .env
  • Xây dựng Image từ Mã nguồn
podman build -t myems/myems-cleaning .

Để xây dựng cho nhiều nền tảng và không chỉ cho kiến trúc và hệ điều hành mà người dùng gọi lệnh build đang chạy. Bạn có thể sử dụng buildx và đặt cờ --platform để chỉ định nền tảng mục tiêu cho đầu ra build, (ví dụ: linux/amd64, linux/arm64 hoặc darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Chạy một container Podman (chạy với quyền superuser)
podman run -d -v /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 Chạy container trong nền và in ID container

  • -v Nếu bạn sử dụng -v hoặc --volume để bind-mount một file hoặc thư mục chưa tồn tại trên máy chủ Podman, -v sẽ tạo endpoint cho bạn. Nó luôn được tạo dưới dạng thư mục. Tùy chọn ro, nếu có, khiến bind mount được mount vào container dưới dạng chỉ đọc. Đối với phiên bản v4.7.0 trở về trước, hãy sử dụng '/code/.env' thay vì '/app/.env'.

  • --log-opt max-size=2m Kích thước tối đa của log trước khi nó được xoay vòng. Một số nguyên dương cộng với một ký hiệu đại diện cho đơn vị đo (k, m hoặc g).

  • --log-opt max-file=2 Số lượng file log tối đa có thể tồn tại. Nếu việc xoay vòng log tạo ra các file dư thừa, file cũ nhất sẽ bị xóa. Một số nguyên dương.

  • --restart Chính sách khởi động lại áp dụng khi một container thoát

  • --name Gán tên cho container

Đường dẫn tuyệt đối trước dấu hai chấm là đường dẫn trên máy chủ và có thể thay đổi tùy hệ thống của bạn. Đường dẫn tuyệt đối sau dấu hai chấm là đường dẫn trên container và KHÔNG THỂ thay đổi. Bằng cách truyền .env làm tham số bind-mount, bạn có thể thay đổi các giá trị cấu hình sau này. Nếu bạn thay đổi file .env, hãy khởi động lại container để thay đổi có hiệu lực.

  • Di chuyển container Podman

Để di chuyển container sang máy tính khác,

  • Xuất image sang file tarball
podman save --output myems-cleaning.tar myems/myems-cleaning
  • Sao chép file tarball sang máy tính khác, sau đó tải image từ file tarball
podman load --input .\myems-cleaning.tar

Bước 6 myems-normalization

Trong phần này, bạn sẽ cài đặt myems-normalization trên Podman.

  • Sao chép mã nguồn vào thư mục gốc
cp -r myems/myems-normalization /
cd /myems-normalization
  • Tạo file .env dựa trên file example.env
Cảnh báo

Thay thế thủ công 127.0.0.1 bằng địa chỉ IP HOST thực tế.

cp example.env .env
  • Xây dựng Image từ Mã nguồn
podman build -t myems/myems-normalization .

Để xây dựng cho nhiều nền tảng và không chỉ cho kiến trúc và hệ điều hành mà người dùng gọi lệnh build đang chạy. Bạn có thể sử dụng buildx và đặt cờ --platform để chỉ định nền tảng mục tiêu cho đầu ra build, (ví dụ: linux/amd64, linux/arm64 hoặc darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Chạy một container Podman (chạy với quyền superuser)
podman run -d -v /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 Chạy container trong nền và in ID container

  • -v Nếu bạn sử dụng -v hoặc --volume để bind-mount một file hoặc thư mục chưa tồn tại trên máy chủ Podman, -v sẽ tạo endpoint cho bạn. Nó luôn được tạo dưới dạng thư mục. Tùy chọn ro, nếu có, khiến bind mount được mount vào container dưới dạng chỉ đọc. Đối với phiên bản v4.7.0 trở về trước, hãy sử dụng '/code/.env' thay vì '/app/.env'.

  • --log-opt max-size=2m Kích thước tối đa của log trước khi nó được xoay vòng. Một số nguyên dương cộng với một ký hiệu đại diện cho đơn vị đo (k, m hoặc g).

  • --log-opt max-file=2 Số lượng file log tối đa có thể tồn tại. Nếu việc xoay vòng log tạo ra các file dư thừa, file cũ nhất sẽ bị xóa. Một số nguyên dương.

  • --restart Chính sách khởi động lại áp dụng khi một container thoát

  • --name Gán tên cho container

Đường dẫn tuyệt đối trước dấu hai chấm là đường dẫn trên máy chủ và có thể thay đổi tùy hệ thống của bạn. Đường dẫn tuyệt đối sau dấu hai chấm là đường dẫn trên container và KHÔNG THỂ thay đổi. Bằng cách truyền .env làm tham số bind-mount, bạn có thể thay đổi các giá trị cấu hình sau này. Nếu bạn thay đổi file .env, hãy khởi động lại container để thay đổi có hiệu lực.

  • Di chuyển container Podman

Để di chuyển container sang máy tính khác,

  • Xuất image sang file tarball
podman save --output myems-normalization.tar myems/myems-normalization
  • Sao chép file tarball sang máy tính khác, sau đó tải image từ file tarball
podman load --input .\myems-normalization.tar

Bước 7 myems-aggregation

Trong phần này, bạn sẽ cài đặt myems-aggregation trên Podman.

  • Sao chép mã nguồn vào thư mục gốc
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • Tạo file .env dựa trên file example.env
cp example.env .env
Cảnh báo

Thay thế thủ công 127.0.0.1 bằng địa chỉ IP HOST thực tế.

  • Xây dựng Image từ Mã nguồn
podman build -t myems/myems-aggregation .

Để xây dựng cho nhiều nền tảng và không chỉ cho kiến trúc và hệ điều hành mà người dùng gọi lệnh build đang chạy. Bạn có thể sử dụng buildx và đặt cờ --platform để chỉ định nền tảng mục tiêu cho đầu ra build, (ví dụ: linux/amd64, linux/arm64 hoặc darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Chạy một container Podman (chạy với quyền superuser)
podman run -d -v /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 Chạy container trong nền và in ID container

  • -v Nếu bạn sử dụng -v hoặc --volume để bind-mount một file hoặc thư mục chưa tồn tại trên máy chủ Podman, -v sẽ tạo endpoint cho bạn. Nó luôn được tạo dưới dạng thư mục. Tùy chọn ro, nếu có, khiến bind mount được mount vào container dưới dạng chỉ đọc. Đối với phiên bản v4.7.0 trở về trước, hãy sử dụng '/code/.env' thay vì '/app/.env'.

  • --log-opt max-size=2m Kích thước tối đa của log trước khi nó được xoay vòng. Một số nguyên dương cộng với một ký hiệu đại diện cho đơn vị đo (k, m hoặc g).

  • --log-opt max-file=2 Số lượng file log tối đa có thể tồn tại. Nếu việc xoay vòng log tạo ra các file dư thừa, file cũ nhất sẽ bị xóa. Một số nguyên dương.

  • --restart Chính sách khởi động lại áp dụng khi một container thoát

  • --name Gán tên cho container

Đường dẫn tuyệt đối trước dấu hai chấm là đường dẫn trên máy chủ và có thể thay đổi tùy hệ thống của bạn. Đường dẫn tuyệt đối sau dấu hai chấm là đường dẫn trên container và KHÔNG THỂ thay đổi. Bằng cách truyền .env làm tham số bind-mount, bạn có thể thay đổi các giá trị cấu hình sau này. Nếu bạn thay đổi file .env, hãy khởi động lại container để thay đổi có hiệu lực.

  • Di chuyển container Podman

  • Xuất image sang file tarball

    podman save --output myems-aggregation.tar myems/myems-aggregation
  • Sao chép file tarball sang máy tính khác, sau đó tải image từ file tarball

    podman load --input .\myems-aggregation.tar

Bước 8 myems-web

Trong phần này, bạn sẽ cài đặt myems-web trên Podman.

  • Sửa đổi file config.js:
Ghi chú

Lấy mapboxToken tại https://mapbox.com và sau đó đặt showOnlineMap thành true. Nếu bạn muốn tắt tính năng bản đồ trực tuyến, hãy đặt showOnlineMap thành false.

cd myems/myems-web
nano src/config.js
Cảnh báo

Thay thế 127.0.0.1:8000 trong nginx.conf bằng địa chỉ IP HOST và cổng thực tế của myems-api

cd myems/myems-web
nano nginx.conf
  • Sao chép mã nguồn vào thư mục gốc
cp -r myems/myems-web /
cd /myems-web
Thông tin

Bạn có thể bỏ qua lệnh 'npm run build' trong phần này một cách an toàn, vì nó đã được tích hợp vào Podmanfile.

  • Xây dựng Image từ Mã nguồn
podman build -t myems/myems-web .

Để xây dựng cho nhiều nền tảng và không chỉ cho kiến trúc và hệ điều hành mà người dùng gọi lệnh build đang chạy. Bạn có thể sử dụng buildx và đặt cờ --platform để chỉ định nền tảng mục tiêu cho đầu ra build, (ví dụ: linux/amd64, linux/arm64 hoặc darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-web .
  • Chạy một container Podman

Trên máy chủ, bind-mount nginx.conf

podman run -d -p 80:80 -v /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 Chạy container trong nền và in ID container

  • -p Xuất bản cổng của container ra máy chủ, 80:80 (Máy chủ:Container) liên kết cổng 80 (bên phải) của container với cổng TCP 80 (bên trái) của máy chủ.

  • -v Nếu bạn sử dụng -v hoặc --volume để bind-mount một file hoặc thư mục chưa tồn tại trên máy chủ Podman, -v sẽ tạo endpoint cho bạn. Nó luôn được tạo dưới dạng thư mục. Tùy chọn ro, nếu có, khiến bind mount được mount vào container dưới dạng chỉ đọc. Đối với phiên bản v4.7.0 trở về trước, hãy sử dụng '/code/.env' thay vì '/app/.env'.

  • --log-opt max-size=2m Kích thước tối đa của log trước khi nó được xoay vòng. Một số nguyên dương cộng với một ký hiệu đại diện cho đơn vị đo (k, m hoặc g).

  • --log-opt max-file=2 Số lượng file log tối đa có thể tồn tại. Nếu việc xoay vòng log tạo ra các file dư thừa, file cũ nhất sẽ bị xóa. Một số nguyên dương.

  • --restart Chính sách khởi động lại áp dụng khi một container thoát

  • --name Gán tên cho container

Nếu bạn muốn di chuyển image sang máy tính khác,

  • Xuất image sang file tarball

    podman save --output myems-web.tar myems/myems-web
  • Sao chép file tarball sang máy tính khác, sau đó tải image từ file tarball

    podman load --input .\myems-web.tar

Sau khi cài đặt

Chúc mừng! Bây giờ bạn có thể đăng nhập vào Giao diện Quản trị (Admin UI) và Giao diện Web (Web UI) của MyEMS.

Cổng mặc định

Giao diện Web MyEMS: 80

API MyEMS: 8000

Giao diện Quản trị MyEMS: 8001

Giả sử địa chỉ máy chủ là 192.168.1.8 (thay thế bằng địa chỉ máy chủ thực tế) Truy cập Giao diện Web MyEMS tại http://192.168.1.8 (80 có thể được bỏ qua) Truy cập Giao diện Quản trị MyEMS tại http://192.168.1.8:8001

Mật khẩu mặc định

Giao diện Quản trị MyEMS

Tên người dùng:

administrator

Mật khẩu:

!MyEMS1

Giao diện Web MyEMS

Tên người dùng:

administrator@myems.io

Mật khẩu:

!MyEMS1

Khắc phục sự cố