Skip to content

Triển khai Docker một chạm ​

Dùng Docker Compose triển khai một chạm FastBee bản mã nguồn mở, hoàn tất dựng môi trường nhanh nhất trong 10 phút. So với triển khai hệ thống (简体中文), cách Docker không cần cài đặt thủ công từng thành phần, phù hợp với đa số người dùng; khi cần kiểm soát chi tiết từng thành phần, hãy chọn triển khai hệ thống.

Tổng quan trang ​

Nội dung trangQuy trình đầy đủ triển khai Docker cho FastBee bản mã nguồn mở: yêu cầu môi trường, script cài đặt một chạm, triển khai docker-compose thủ công, import cơ sở dữ liệu và xác minh triển khai.
Trường hợp sử dụngPhù hợp với người dùng triển khai lần đầu hoặc dựng nhanh môi trường thử nghiệm, một lệnh hoàn tất cài đặt MySQL, Redis, backend, Nginx và dịch vụ streaming.
Điều kiện tiên quyếtMáy chủ đã cài Docker 20.10+ và Docker Compose 2.0+, tối thiểu 2 nhân 4GB RAM, các cổng liên quan chưa bị chiếm dụng.
Tiêu chí nghiệm thuTất cả container ở trạng thái Up, trình duyệt mở được trang đăng nhập và đăng nhập bằng admin / admin123, cổng MQTT 1883 kết nối được.

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

  • Linux / macOS / Windows (khuyến nghị máy chủ Linux)
  • Docker 20.10+
  • Docker Compose 2.0+
  • Tối thiểu 2 nhân 4GB RAM
  • Ít nhất 10GB dung lượng đĩa trống (cho image và volume dữ liệu)
  • Các cổng 80, 443, 8080, 1883, 8083, 5061(UDP), 8082... chưa bị chiếm dụng, mô tả đầy đủ các cổng xem tại Cài đặt triển khai (简体中文)

Trước khi triển khai có thể xác minh môi trường Docker:

bash
docker --version
docker-compose --version

Cài đặt một chạm ​

bash
sudo wget -c https://hub.fastbee.cn/resource/install.sh && bash ./install.sh

Theo lời nhắc chọn phiên bản mã nguồn mở, script sẽ tự động hoàn tất kéo và khởi động tất cả dịch vụ. Sau khi cài đặt kết thúc, chạy docker-compose ps để xác nhận trạng thái các container, và ghi lại địa chỉ truy cập mà script xuất ra.

Triển khai thủ công ​

Khi script một chạm không dùng được hoặc cần tùy biến orchestration, có thể triển khai thủ công theo mục này.

1. Chuẩn bị thư mục ​

bash
mkdir -p /var/data/{mysql,redis,java,nginx,zlmedia}

Triển khai thủ công cần tự chuẩn bị các file mount sau, có thể lấy từ kho mã nguồn và build theo triển khai hệ thống (简体中文):

Đường dẫnNội dung
/var/data/java/fastbee-admin.jarGói jar dịch vụ backend
/var/data/nginx/vueSản phẩm build frontend (vue/dist)
/var/data/nginx/nginx.confCấu hình Nginx
/var/data/mysql/mysql.cnfCấu hình MySQL
/var/data/zlmedia/conf/config.iniCấu hình ZLMediaKit

2. docker-compose.yml ​

yaml
version: '2'
networks:
  network:
    ipam:
      driver: default
      config:
        - subnet: '177.7.0.0/16'

services:
  mysql:
    image: mysql:5.7
    container_name: mysql
    ports:
      - 3306:3306
    networks:
      network:
        ipv4_address: 177.7.0.11
    volumes:
      - /var/data/mysql/mysql:/var/lib/mysql
      - /var/data/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
      - /var/data/mysql/initdb:/docker-entrypoint-initdb.d
    environment:
      MYSQL_DATABASE: fastbee
      MYSQL_ROOT_PASSWORD: iot@admin123
    command:
      ['mysqld','--character-set-server=utf8','--collation-server=utf8_unicode_ci',
       '--default-time-zone=+8:00','--lower-case-table-names=1']

  redis:
    image: redis:7.0.0
    container_name: redis
    ports:
      - 6379:6379
    networks:
      network:
        ipv4_address: 177.7.0.10
    volumes:
      - /var/data/redis:/usr/local/etc/redis
      - /var/data/redis/data:/data
    command: ['-- requirepass iot@admin123','-- appendonly yes']

  java:
    image: openjdk:8-jre
    container_name: java
    ports:
      - 8080:8080
      - 1883:1883
      - 8083:8083
      - 5061:5061/udp
    depends_on:
      - redis
      - mysql
      - zlmedia
    volumes:
      - /var/data/java/fastbee-admin.jar:/server.jar
      - /var/data/java/uploadPath:/uploadPath
      - /var/data/java/logs:/logs
    entrypoint: java -jar /server.jar

  nginx:
    image: nginx:stable
    container_name: nginx
    ports:
      - 80:80
      - 443:443
    depends_on:
      - java
    volumes:
      - /var/data/nginx/vue:/usr/share/nginx/html
      - /var/data/nginx/nginx.conf:/etc/nginx/nginx.conf

  zlmedia:
    image: zlmediakit/zlmediakit:master
    container_name: zlmedia
    ports:
      - 8082:80
      - 554:554
      - 1935:1935
    volumes:
      - /var/data/zlmedia/conf/config.ini:/opt/media/conf/config.ini

3. Khởi động dịch vụ ​

bash
docker-compose up -d
docker-compose ps   # kiểm tra trạng thái container

4. Import cơ sở dữ liệu ​

Import springboot/sql/fastbee.sql vào MySQL.

bash
docker exec -i mysql mysql -uroot -piot@admin123 fastbee < fastbee.sql

Truy cập hệ thống ​

Sau khi triển khai hoàn tất, truy cập bằng trình duyệt:

http://ip-may-chu-cua-ban:80
  • Tài khoản: admin
  • Mật khẩu: admin123

Lưu ý bảo mật

Sau lần đăng nhập đầu tiên, vui lòng đổi ngay mật khẩu mặc định; mật khẩu mặc định của cơ sở dữ liệu và Redis chỉ dùng cho thử nghiệm cục bộ, môi trường sản xuất bắt buộc phải thay đổi.

Xác minh triển khai ​

  1. Trong kết quả docker-compose ps, trạng thái của mysql, redis, java, nginx, zlmedia đều là Up.
  2. Trình duyệt truy cập http://ip-may-chu-cua-ban, đăng nhập thành công vào bảng điều khiển bằng admin / admin123.
  3. Dùng client như MQTTX kết nối cổng 1883 để xác minh đường truyền kết nối thiết bị, tham số kết nối và bước kiểm thử xem tại Kết nối MQTT.

Câu hỏi thường gặp ​

Hỏi: Cổng bị chiếm dụng thì làm sao? Sửa ánh xạ cổng trong docker-compose.yml, ví dụ đổi - 8080:8080 thành - 9090:8080.

Hỏi: Xem log như thế nào?

bash
docker logs -f java   # log dịch vụ backend
docker logs -f mysql  # log cơ sở dữ liệu

Hỏi: Container liên tục khởi động lại thì làm sao? Trước tiên dùng docker logs <tên container> xem nguyên nhân thoát, nguyên nhân thường gặp gồm xung đột cổng, không đủ bộ nhớ hoặc thiếu file cấu hình mount; khi triển khai thủ công, hãy kiểm tra kỹ các file ở mục 1 đã đầy đủ chưa.

Hỏi: Không truy cập được trang hoặc gặp lỗi 502? Xác nhận cả container nginx và java đều đang chạy. Backend lần đầu khởi động cần khởi tạo, dùng docker logs -f java xác nhận khởi động xong rồi hãy truy cập.

Hỏi: Backend báo kết nối cơ sở dữ liệu thất bại? Xác nhận container mysql ở trạng thái bình thường, mật khẩu root khớp với cấu hình backend; với kịch bản triển khai thủ công cần xác nhận đã chạy bước 4 để import fastbee.sql.

Hỏi: Nâng cấp như thế nào? Thay /var/data/java/fastbee-admin.jar rồi khởi động lại container:

bash
docker restart java