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
Đ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:
docker --version
docker-compose --versionCài đặt một chạm
sudo wget -c https://hub.fastbee.cn/resource/install.sh && bash ./install.shTheo 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
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ẫn | Nội dung |
|---|---|
/var/data/java/fastbee-admin.jar | Gói jar dịch vụ backend |
/var/data/nginx/vue | Sản phẩm build frontend (vue/dist) |
/var/data/nginx/nginx.conf | Cấu hình Nginx |
/var/data/mysql/mysql.cnf | Cấu hình MySQL |
/var/data/zlmedia/conf/config.ini | Cấu hình ZLMediaKit |
2. docker-compose.yml
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.ini3. Khởi động dịch vụ
docker-compose up -d
docker-compose ps # kiểm tra trạng thái container4. Import cơ sở dữ liệu
Import springboot/sql/fastbee.sql vào MySQL.
docker exec -i mysql mysql -uroot -piot@admin123 fastbee < fastbee.sqlTruy 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
- Trong kết quả
docker-compose ps, trạng thái của mysql, redis, java, nginx, zlmedia đều là Up. - 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ằngadmin/admin123. - 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?
docker logs -f java # log dịch vụ backend
docker logs -f mysql # log cơ sở dữ liệuHỏ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:
docker restart java

