Установка moodle 3.8 docker

Установка moodle 3.8 docker

от Дмитрий Пименов -
Количество ответов: 3

использую для Moodle docker с конфигурацией nginx + PHP 7.3 + mysql 5.7 

1) Будет ли мудл работать без Apache? На nginx + php -fpm?

2) при установке выходят ошибки на скрине. Как исправить? Спасибо заранее.

error

Содержимое docker-compose.yml

version: '3'

networks:
backend:

services:

nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "${NGINX_PORT}:80"
volumes:
- ./projects:/var/www
- ./mdldata/:/var/mdldata/
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx/
depends_on:
- php-7.3
- mysql-5.7
environment:
TZ: ${WORKSPACE_TIMEZONE}
networks:
- backend

mysql-5.7:
image: mysql:5.7
container_name: mysql-5.7
restart: unless-stopped
volumes:
- ./mysql-5.7/data:/var/lib/mysql
- ./mysql-5.7/conf.d:/etc/mysql/conf.d
- ./mysql-5.7/logs:/var/log/mysql/
- ./mysql-5.7/dump:/dump
ports:
- "${MYSQL_5_7_PORT}:3306"
security_opt:
- seccomp:unconfined
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
TZ: ${WORKSPACE_TIMEZONE}
networks:
- backend


php-7.3:
build:
context: ./php-workspace
dockerfile: Dockerfile
args:
DOCKER_PHP_VERSION: '7.3'
DOCKER_PHP_ENABLE_XDEBUG: ${DOCKER_PHP_ENABLE_XDEBUG}
TZ: ${WORKSPACE_TIMEZONE}
working_dir: /var/www
container_name: php-7.3
volumes:
- ./.ssh:/home/www-data/.ssh
- ./projects:/var/www
- ./mdldata/:/var/mdldata/
- ./php-ini/7.3/php.ini:/usr/local/etc/php/php.ini
- ./php-workers/7.3/supervisor.d:/etc/supervisor.d
ports:
- "${PHP_7_3_PORT}:9000"
networks:
- backend
extra_hosts:
- 'mdl.local:192.168.65.2'
Конфиг nginx

server {
listen 80;
index index.php index.html;
server_name mdl.local;
error_log /var/log/nginx/mdl.local.error.log debug;
access_log /var/log/nginx/mdl.local.access.log combined if=$loggable;

server_name_in_redirect off;
charset utf-8;
gzip on;
gzip_disable "msie6";
client_max_body_size 10000M;
root /var/www/mdl.local/;

proxy_read_timeout 1800;
proxy_connect_timeout 1800;
proxy_send_timeout 1800;
send_timeout 1800;

location / {
try_files $uri /index.php$is_args$args;
}

location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass php-7.3:9000;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;
fastcgi_cache_lock_timeout 15s;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /dataroot/ {
internal;
alias /var/mdldata; # ensure the path ends with /
}
location ~ /\.ht {
deny all;
}
}

В ответ на Дмитрий Пименов

Re: Установка moodle 3.8 docker

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
Будет ли мудл работать без Apache? На nginx + php -fpm?
Да. Работает.
У докера есть один крупный недостаток - отладка в нем крайне трудоемка.
Настройте эту связку в обычном режиме, а потом уже переносите в докер.

Про ошибку - а у вас есть файл capability_assigned.php в каталоге /var/www/mdl.local/lib/classes/event ?
(внутри контейнера)
В ответ на Виталий Лавров

Re: Установка moodle 3.8 docker

от Дмитрий Пименов -
Трудоёмкости я не боюсь))
Есть необходимость установить на докере, т.к. есть еще другие сайты на сервере. 
На Open Server в Windows ставиться нормально.

да, файл есть /var/www/mdl.local/lib/classes/event  
Из-за чего он может не видеть классы? Помогите, пожалуйста найти причину. Очень хочется на докере разрабатывать под мудл. 
Папки в moodledata cache  и localcache чистил. Не помогло.
Устанавливал из официальной ветки в репозитории github

лог ошибки nginx 
2021/02/18 19:12:35 [error] 32#32: *20 FastCGI sent in stderr: "PHP message: Default exception handler: Exception - Class 'core\event\capability_assigned' not found Debug: 
Error code: generalexceptionmessage
* line 1383 of /lib/accesslib.php: Error thrown
* line 1165 of /lib/accesslib.php: call to assign_capability()
* line 2305 of /lib/accesslib.php: call to assign_legacy_capabilities()
* line 264 of /lib/db/install.php: call to update_capabilities()
* line 1755 of /lib/upgradelib.php: call to xmldb_main_install()
* line 276 of /admin/index.php: call to install_core()" while reading upstream, client: 172.25.0.1, server: mdl.local, request: "GET /admin/index.php?cache=0&agreelicense=1&confirmrelease=1&lang=en HTTP/1.1", upstream: "fastcgi://172.25.0.3:9000", host: "mdl.local", referrer: "http://mdl.local/admin/index.php?cache=0&lang=en&agreelicense=1"

Приложение ibs-server.png
В ответ на Дмитрий Пименов

Re: Установка moodle 3.8 docker

от Виталий Лавров -
Изображение пользователя Эксперт по Moodle
Трудоёмкости я не боюсь))
т.е. хочется стоя, в гамаке, в акваланге, спиной друг к другу улыбаюсь ?
Если научите php-fpm, nginx и mysql писать логи в файлы, то проблемы будет находить проще.

Есть необходимость установить на докере, т.к. есть еще другие сайты на сервере.
Вот тут я вообще не понимаю в чем проблема! Если оно в виде виртуального http-сервера, то нет никаких проблем.
Мелкие сложности могут появиться если moodle должен быть в виде подкаталога http-сервера.

А права на все php файлы действительно 0666 ?

Про ошибку - смотрите логи php-fpm. Нехватка памяти может давать ложные ошибки, а при инсталляции её нужно больше, чем при обычной работе.
Сообщение о нехватки памяти обычно видно в логах php-fpm.

В крайнем случае добавить в config.php
$CFG->debug = (E_ALL | E_STRICT);
$CFG->debugdisplay = 1;
и повторить попытку.