Skip to content

Развёртывание Docker в один клик ​

Разверните open-source версию FastBee с помощью Docker Compose — полное окружение готово за 10 минут. По сравнению с системным развёртыванием (на кит.) способ Docker не требует ручной установки компонентов и подходит большинству пользователей; если нужен тонкий контроль над каждым компонентом, выберите системное развёртывание.

Обзор страницы ​

Содержание страницыПолный процесс Docker-развёртывания open-source версии FastBee: требования к окружению, скрипт установки в один клик, ручное развёртывание docker-compose, импорт базы данных и проверка развёртывания.
Кому подходитПользователям, выполняющим первое развёртывание или быстро поднимающим тестовое окружение: одна команда устанавливает MySQL, Redis, backend, Nginx и сервис потокового медиа.
ТребованияНа сервере установлены Docker 20.10+ и Docker Compose 2.0+, минимум 2 ядра CPU и 4 ГБ ОЗУ, соответствующие порты свободны.
Критерии приёмкиВсе контейнеры в состоянии Up, в браузере открывается страница входа и работает вход admin / admin123, порт MQTT 1883 доступен для подключения.

Предварительные требования ​

  • Linux / macOS / Windows (рекомендуется Linux-сервер)
  • Docker 20.10+
  • Docker Compose 2.0+
  • Минимум 2 ядра CPU и 4 ГБ ОЗУ
  • Не менее 10 ГБ свободного дискового пространства (для образов и томов данных)
  • Порты 80, 443, 8080, 1883, 8083, 5061 (UDP), 8082 и др. не заняты; полное описание портов см. в разделе Установка и развёртывание (на кит.)

Перед развёртыванием можно проверить окружение Docker:

bash
docker --version
docker-compose --version

Установка в один клик ​

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

В ответ на запрос выберите open-source версию — скрипт автоматически загрузит и запустит все сервисы. После завершения установки выполните docker-compose ps, чтобы проверить состояние контейнеров, и запишите адреса доступа, выведенные скриптом.

Ручное развёртывание ​

Если скрипт в один клик недоступен или требуется собственная оркестрация, выполните развёртывание вручную по этому разделу.

1. Подготовка каталогов ​

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

При ручном развёртывании нужно самостоятельно подготовить следующие монтируемые файлы; их можно получить из репозитория исходного кода и собрать по инструкции Системное развёртывание (на кит.):

ПутьСодержимое
/var/data/java/fastbee-admin.jarjar-пакет backend-сервиса
/var/data/nginx/vueСобранный frontend (vue/dist)
/var/data/nginx/nginx.confКонфигурация Nginx
/var/data/mysql/mysql.cnfКонфигурация MySQL
/var/data/zlmedia/conf/config.iniКонфигурация 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. Запуск сервисов ​

bash
docker-compose up -d
docker-compose ps   # проверка состояния контейнеров

4. Импорт базы данных ​

Импортируйте springboot/sql/fastbee.sql в MySQL.

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

Доступ к системе ​

После завершения развёртывания откройте в браузере:

http://server-ip:80
  • Логин: admin
  • Пароль: admin123

Напоминание о безопасности

Сразу после первого входа измените пароль по умолчанию; пароли базы данных и Redis по умолчанию предназначены только для локального тестирования и в производственной среде должны быть заменены.

Проверка развёртывания ​

  1. В выводе docker-compose ps контейнеры mysql, redis, java, nginx и zlmedia находятся в состоянии Up.
  2. В браузере откройте http://server-ip и войдите в консоль с учётными данными admin / admin123.
  3. Подключитесь клиентом MQTTX или аналогичным к порту 1883, чтобы проверить канал подключения устройств; параметры подключения и шаги тестирования см. в Подключение по MQTT.

Часто задаваемые вопросы ​

Q: Что делать, если порт занят? Измените сопоставление портов в docker-compose.yml, например - 8080:8080 на - 9090:8080.

Q: Как посмотреть журналы?

bash
docker logs -f java   # журнал backend-сервиса
docker logs -f mysql  # журнал базы данных

Q: Что делать, если контейнер постоянно перезапускается? Сначала выполните docker logs <имя-контейнера> и посмотрите причину завершения. Типичные причины: конфликт портов, нехватка памяти или отсутствие смонтированных конфигурационных файлов; при ручном развёртывании особенно проверьте, что все файлы из шага 1 на месте.

Q: Страница не открывается или ошибка 502? Убедитесь, что контейнеры nginx и java запущены. При первом запуске backend выполняет инициализацию — дождитесь её завершения по docker logs -f java, затем открывайте страницу.

Q: Backend сообщает об ошибке подключения к базе данных? Убедитесь, что контейнер mysql работает нормально и пароль root совпадает с конфигурацией backend; при ручном развёртывании проверьте, что выполнен шаг 4 — импорт fastbee.sql.

Q: Как выполнить обновление? Замените /var/data/java/fastbee-admin.jar и перезапустите контейнер:

bash
docker restart java