Docker MajorDoMo

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

Аватара пользователя
champloo
Сообщения: 42
Зарегистрирован: Ср май 22, 2019 12:07 pm
Благодарил (а): 2 раза
Поблагодарили: 15 раз

Re: Docker MajorDoMo

Сообщение champloo » Пт авг 28, 2020 5:35 pm

Раз тема хоть немного была жива.

Попробую на днях обкатать новый патч.
Сейчас попробую поговорить с разработчиками найти все места где меняется код и вынести всё таки в ядро образ и причесать для более удобной работы.
By design...
sdenisb
Сообщения: 5
Зарегистрирован: Пн сен 28, 2020 10:03 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Docker MajorDoMo

Сообщение sdenisb » Пн окт 26, 2020 11:29 pm

Доброго дня!

Развлекаюсь тут на досуге с docker. Пытаюсь собрать стек по инструкции.
из репозитория.

Первое с чем столкнулся это не возможность создания БД, т.к переменные из файла config.env не предаются в контейнер mysql. Оказалось надо сохранить файл, как ".env", а не "config.env" и соответственно изменить в Makefile файле строчку "cnf ?= config.env" на "cnf ?= .env"
Потом избавился от строк в init-db в Makefile файле:Показать
@$(call docker_compose, exec mysql mysqladmin -p$(MYSQL_ROOT_PASSWORD) drop $(MYSQL_DATABASE))
@$(call docker_compose, exec mysql mysqladmin -p$(MYSQL_ROOT_PASSWORD) create $(MYSQL_DATABASE))
Так они приводили:Показать
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'
Следующий шаг выдать пользователю mysql (в моем случае majordomo) привилегии: SUPER, RELOAD (выдавал из phpmyadmin)
Команда из phpmyadmin, если кто через консоль выдавать будет:Показать
REVOKE ALL PRIVILEGES ON *.* FROM 'majordomo'@'%'; REVOKE GRANT OPTION ON *.* FROM 'majordomo'@'%'; GRANT RELOAD, SUPER ON *.* TO 'majordomo'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Ну и на последок mosquitto.
Ошибка в логах контейнера:Показать
Error saving in-memory database, unable to open /mosquitto/datamosquitto.db.new for writing
Надо добавить в mosquitto.conf "/" в конце persistence_location /mosquitto/data/
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Docker MajorDoMo

Сообщение Divan » Сб ноя 14, 2020 1:17 am

Как запускать в докере Python сценарии?

Создаем сценарий и вставляем такой код: shell_exec("версия питона путь к срипту/имя вашего скрипта.py");
Вот мой пример
СпойлерПоказать
изображение_2020-11-14_010035.png
изображение_2020-11-14_010035.png (26.45 КБ) 3145 просмотров
Для того, чтобы в докере работал запуск питоновских скриптов, необходимо установить python-requests, если этого не сделать, то получим вот такую ошибку No module named 'requests'
СпойлерПоказать
12.jpg
12.jpg (31.9 КБ) 3145 просмотров

Если не стоит Python?
apt install python

Как установить в докер python-requests?

Сперва нужно узнать какая версия python выбрана по дефолту, а после ставим python-requests согласно указанной версии Python по дефолту. Узнать дефолтную версию питона можно так:
python –version

Если у нас стоит дефолтная версия Python 2:
apt-get update && apt-get install python-requests

Если у нас стоит дефолтная версия Python 3:
apt-get update && apt-get install python3-requests

Установить в обе версии:
apt-get install python-requests python3-requests


Если же нужно установить библиотеки через pip:
apt-get update && apt-get install python3-pip && pip3 install requests

Команды можно запускать через терминал докера
СпойлерПоказать
терминал докера.jpg
терминал докера.jpg (57.76 КБ) 3145 просмотров
Последний раз редактировалось Divan Вс ноя 15, 2020 1:56 pm, всего редактировалось 1 раз.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Docker MajorDoMo

Сообщение Divan » Сб ноя 14, 2020 10:24 pm

Рабочие конфиги для работы приватных навыков модуля yandex home. Смотреть видео

Установить nano в Docker
# apt install nano

Если вдруг случайно затерли базовый конфиг

Код: Выделить всё

server {                                                                                                         
        listen 8888 default_server;                                                                              
        listen [::]:8888 default_server;                                                                         
        index index.php index.html index.htm ;                                                                   
        server_name 127.0.0.1 localhost _;                                                                       
        set $MAGE_ROOT /var/www/html;                                                                            
        error_log  /var/log/nginx/error.log;                                                                     
        access_log /var/log/nginx/access.log;                                                                    
        root $MAGE_ROOT;                                                                                         
                                                                                                                 
        charset utf-8;                                                                                           
                                                                                                                 
        location ~ \.html {                                                                                      
                if (!-e $request_filename){                                                                      
                        rewrite ^(.*)$ /nf.php;                                                                  
                }                                                                                                
        }                                                                                                        
                                                                                                                 
        location ~ [^/]\.php(/|$) {                                                                              
                include snippets/fastcgi-php.conf;                                                               
                fastcgi_pass 127.0.0.1:9000;                                                                     
        }                                                                                                        
                                                                                                                 
        location /api {                                                                                          
                rewrite ^(.*)$ /api.php;                                                                         
        }                                                                                                        
                                                                                                                 
        location ~ /\.ht {                                                                                       
                deny all;                                                                                        
        }                                                                                                        
                                                                                                                 
        location /config.php {                                                                                   
                deny all;                                                                                        
        }                                                                                                        
                                                                                                                 
        location /debmes.txt {                                                                                   
                deny all;                                                                                        
        }                                                                                                        
}    

Конфиг для приватных навыков модуля yandex home

Код: Выделить всё

server { 
listen 9443;
server_name 127.0.0.1 localhost _;
root /var/www/html/webhooks;

   location /modules/yandexhome/token.php {
      proxy_pass http://127.0.0.1:8888/modules/yandexhome/token.php;
   }                                                                                                             

   location /modules/yandexhome/authorize.php {
      proxy_pass http://127.0.0.1:8888/modules/yandexhome/authorize.php;
   }

   location /modules/yandexhome/smarthome.php {                                                                  
      proxy_pass http://127.0.0.1:8888/modules/yandexhome/smarthome.php;                                         
   }                                                                                                             

   location /modules/yandexhome/img {                                                                            
      proxy_pass http://127.0.0.1:8888/modules/yandexhome/img;                                                        
   }

   location /modules/yandexhome/css { 
      proxy_pass http://127.0.0.1:8888/modules/yandexhome/css;                                                   

   }

ssl on;
ssl_certificate /var/www/html/SSLCerts/VWx5Nb/fullchain.pem;
ssl_certificate_key /var/www/html/SSLCerts/VWx5Nb/privkey.pem;

access_log /var/log/nginx/webhooks.access.log;
error_log /var/log/nginx/webhooks.error.log;

}

Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
geor
Сообщения: 83
Зарегистрирован: Сб май 17, 2014 2:52 am
Откуда: Новосибирск
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Re: Docker MajorDoMo

Сообщение geor » Ср дек 02, 2020 11:21 am

Здравствуйте.
Вопрос знатокам
MajorDoMo в докере на малине.
Хочу создать контейнер с базой и вынести на другой сервер, как подключиться к этому контейнеру, какие проблемы могут быть?
solalex
Сообщения: 19
Зарегистрирован: Сб дек 21, 2019 9:36 pm
Благодарил (а): 4 раза
Поблагодарили: 3 раза

Re: Docker MajorDoMo

Сообщение solalex » Чт дек 03, 2020 2:10 pm

вместо кучи proxypass на каждый файл, хватит одного на директорию

Код: Выделить всё

location /modules/yandexhome/ {
      proxy_pass http://127.0.0.1:8888/modules/yandexhome;
   }        
zagorodnov
Сообщения: 2
Зарегистрирован: Пн дек 07, 2020 6:05 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Docker MajorDoMo

Сообщение zagorodnov » Пн дек 07, 2020 6:14 pm

Здравствуйте!
Установил и настроил систему из докер-хаба: "nick7zmail/majordomo".
При обновлении образа не будет ли удалена база данных? И где она хранится (настройки по-умолчанию)?
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Docker MajorDoMo

Сообщение Divan » Пн дек 07, 2020 7:50 pm

zagorodnov писал(а):
Пн дек 07, 2020 6:14 pm
Здравствуйте!
Установил и настроил систему из докер-хаба: "nick7zmail/majordomo".
При обновлении образа не будет ли удалена база данных? И где она хранится (настройки по-умолчанию)?
Зачем вам обновлять образ? Там только настроены приватные навыки.

Если принципиально хотите обновить образ, то придется сделать следующее:
1) Поставить модуль phpmyadmin, сделать экспорт базы или сделать копию базы с помощью скрипта (лучше сделать оба варианта, как подстраховка)

Код: Выделить всё

$filename  = '/var/www/html/backup/db_terminal_backup.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
2) Скопировать все содержимое папки в докере куда-нибудь

Выключаете докер, удаляете контейнер, потом удаляете образ и все делаете по новой. Удалить образ без удаления контейнера нельзя, так как образ напрямую зависит от контейнера. Далее удаляете все данные которые выгрузил докер при включении и копируете то, что было у вас + импортируете базу через phpmyadmin.
За это сообщение автора Divan поблагодарил:
zagorodnov (Вт дек 08, 2020 6:04 am)
Рейтинг: 1.16%
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
zagorodnov
Сообщения: 2
Зарегистрирован: Пн дек 07, 2020 6:05 pm
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Docker MajorDoMo

Сообщение zagorodnov » Вт дек 08, 2020 6:08 am

Зачем вам обновлять образ? Там только настроены приватные навыки.
Спасибо вам за ответ!

Я исхожу из того, что если разработчик обновляет образ, то вносит в него какие-то улучшения и исправления ошибок.
Аватара пользователя
Divan
Сообщения: 859
Зарегистрирован: Пн июл 08, 2019 5:04 pm
Благодарил (а): 117 раз
Поблагодарили: 280 раз

Re: Docker MajorDoMo

Сообщение Divan » Пт дек 25, 2020 4:01 pm

Это про образ от nick7zmail

Если на странице сценария в подсказке "Как запустить?" увидите повторяющиеся порты, как на скриншоте, то нужно сделать следующее.
СпойлерПоказать
Безымянный.jpg
Безымянный.jpg (33.41 КБ) 2475 просмотров
Открываем файлик load_settings.php (он лежит в корне /var/www/html)
Находим строчку (115 строчка)

Код: Выделить всё

Define('SERVER_URL', 'http://' . $_SERVER['HTTP_HOST'] . ':' . $_SERVER['SERVER_PORT']); 
и меняем на

Код: Выделить всё

Define('SERVER_URL', 'http://' . $_SERVER['HTTP_HOST'] );


PS: Обратите внимание, что имеются два вида образа мажордом в докере, один образ от nick7zmail и второй от A-SOM.

Если нужны приватные навыки, то нужно использовать образ от nick7zmail
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
Ответить