ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Moodle-Docker 部署五分钟指南:让 Moodle 测试环境一次跑通

Moodle-Docker 部署五分钟指南:让 Moodle 测试环境一次跑通 Moodle-Docker 部署五分钟指南让 Moodle 测试环境一次跑通【免费下载链接】moodle-dockerA docker environment for moodle developers项目地址: https://gitcode.com/gh_mirrors/mo/moodle-dockerMoodle-Docker 是一套面向 Moodle 开发者和测试人员的容器化配置把 Apache/PHP、数据库、Selenium 测试浏览器和邮件捕获服务打包成现成的容器你只需指一下自己的代码目录几条命令就能在本地搭起一套 Moodle 测试环境不用自己安装 PHP、Apache 和数据库。Moodle Docker 搭建步骤第一次完整走一遍先做环境检查先别急着敲命令确认两个工具版本docker --version—— 终端会打印出 Docker 版本号这个环境最低要 v20.15.15 之前的老版本不行实际建议 v20.10.15 起步能新就新docker compose version—— Compose 是用来一条命令拉起一组容器的工具最低 v2.5.0。版本太旧时先升级 Docker 或 Docker Desktop能省掉后面很多怪问题。另外提一句如果打算用 Microsoft SQL Server 当数据库机器内存至少要留 3.25GB它是几个选项里最吃资源的。拿到两份代码第一份是配置仓库本身git clone https://gitcode.com/gh_mirrors/mo/moodle-docker它里面是各种 Compose 配置和辅助脚本相当于整套环境的图纸。第二份是要测试的 Moodle 源码放到一个固定目录比如./moodlegit clone -b MOODLE_405_STABLE git://git.moodle.org/moodle.git ./moodle-b后面跟的是分支名想测哪个版本就换成哪个分支如果你本地已经有这份代码这步可以跳过。设置两个必填的环境变量启动前告诉环境代码在哪和用哪个数据库export MOODLE_DOCKER_WWWROOT./moodle指向 Moodle 代码所在目录预期是命令执行完没有任何输出正常。export MOODLE_DOCKER_DBpgsql选数据库类型可选项有 pgsql、mariadb、mysql、mssql、oracle。第一次用建议选 pgsqlPostgreSQL 的缩写它最省心。启动容器把模板配置复制到代码目录然后点火cp config.docker-template.php $MOODLE_DOCKER_WWWROOT/config.php这一步是把容器环境专用的数据库连接配置放进 Moodle 目录同样执行无输出。bin/moodle-docker-compose up -d后台启动全部容器预期看到容器逐个创建完成、没有红色报错。bin/moodle-docker-wait-for-db等待数据库容器真正就绪预期是命令跑完后返回提示。mssql 和 oracle 启动偏慢跳过这步很容易在初始化时失败。全新实例再补一条直接用命令行完成站点安装参数里是站点名、管理员账号密码bin/moodle-docker-compose exec webserver php admin/cli/install_database.php --agree-license --fullname测试站点 --shortnametest --adminpasstest --adminemailadminexample.com跑完后用 admin / test 登录 http://localhost:8000/ 就能看到首页了。 容器起不来时先查这几个地方设置了环境变量却没生效最常见的原因是时机不对。所有变量都必须在调用bin/moodle-docker-compose up之前设置好漏设或想改值时要重建容器而不是重启bin/moodle-docker-compose down bin/moodle-docker-compose up -ddown拆掉旧容器up按新配置重建预期是容器名全部重新出现。忘了这步的话你会对着为什么改了没反应困惑半天。数据库好了但站点还是报错多半是数据库还没完全就绪用bin/moodle-docker-wait-for-db等一轮再试。仍不行就核对MOODLE_DOCKER_DB的值和你实际想测的类型是否一致比如设了 mssql 却按 pgsql 的方式连肯定失败。端口被占用页面打不开默认 Web 端口是 8000被本机其他服务占着就会冲突。换端口只需一个变量export MOODLE_DOCKER_WEB_PORT1234重建容器后改从 http://localhost:1234/ 访问即可MOODLE_DOCKER_WEB_HOST还能顺带改主机名。手动测试时一直被登出账号密码都对却反复掉线通常是浏览器缓存的 cookie 出了问题。清掉浏览器中 localhost 相关的 cookie 即可恢复。想暂停但不想销毁bin/moodle-docker-compose stop只停容器不删数据下次bin/moodle-docker-compose start原样回来down则是彻底拆掉。日常开发用 stop/start 的循环比每次重建轻快得多。Moodle 开发环境配置数据库切换与邮件查看一行命令换数据库PostgreSQL、MySQL、MariaDB、Microsoft SQL Server、Oracle XE想测哪个就改MOODLE_DOCKER_DB的值其余配置不用动。仓库里每种库都有对应的 Compose 文件db.pgsql.yml、db.mssql.yml 等启动脚本会按变量自动挑一个加载。想固定数据库大版本再设MOODLE_DOCKER_DB_VERSION指定镜像标签。 查看站点发出的邮件Moodle 会发各种邮件注册通知、密码重置、作业提醒。默认配置里 SMTP 指向一个叫 Mailpit 的邮件捕获服务——可以理解为收件箱邮件不会真正发出去而是全部落在这里。浏览器打开 http://localhost:8000/_/mail就能翻阅和检索站点发过的每一封邮件排查邮件相关功能时非常省事。跑 Behat 测试Behat 是一种用接近自然语言写测试步骤、让真实浏览器照着点击的测试工具容器里已经配好了 Selenium 和 Firefox/Chrome。容器运行状态下bin/moodle-docker-compose exec webserver php admin/tool/behat/cli/init.php初始化测试环境预期看到初始化成功的信息。bin/moodle-docker-compose exec -u www-data webserver php admin/tool/behat/cli/run.php --tagsauth_manual按标签跑一批用例预期输出场景和步骤数、通过情况统计。失败的用例会留下截图和回放在 http://localhost:8000/_/faildumps/ 直接看。想换浏览器跑把MOODLE_DOCKER_BROWSER设成 chrome记得重建容器再设上MOODLE_DOCKER_SELENIUM_VNC_PORT还能用 VNC 客户端实时围观浏览器操作调试体验很好。phpunit 与外部服务单元测试同理bin/moodle-docker-compose exec webserver进入 Web 容器后执行vendor/bin/phpunit加用例路径即可预期输出熟悉的 OK 或失败清单。若代码依赖 solr、ldap、redis、memcached 这类外部组件把MOODLE_DOCKER_PHPUNIT_EXTERNAL_SERVICES设成任意值对应的服务容器会随站点一起拉起。 进阶玩法同时跑多个 Moodle启动前分别设置不同的COMPOSE_PROJECT_NAME如 moodle34、moodle45和MOODLE_DOCKER_WEB_PORT两个版本的站点就能并排运行、对比行为操作哪个实例就先 export 对应的COMPOSE_PROJECT_NAME。加自己的服务在仓库目录放一个local.yml启动脚本会把它和其他配置自动合并适合加 adminer 之类的数据库管理界面不用改动原有文件。切换 PHP 版本MOODLE_DOCKER_PHP_VERSION支持 Moodle 覆盖的各 PHP 版本8.4 到 5.6默认 8.3测旧版本兼容性时改它就行。Moodle 移动端测 App 时结合MOODLE_DOCKER_APP_PATH本地代码或MOODLE_DOCKER_APP_VERSION镜像版本并选用 chrome 浏览器容器会同时提供应用服务细节可以看仓库里的 moodle-app.yml。XDebug 调试镜像默认不带 XDebug避免拖慢测试。需要实时调试时在运行的 Web 容器里用 pecl 安装、把xdebug.client_host指回宿主机Windows/macOS 上用 host.docker.internal再重启 webserver 容器即可。收尾一键还原现场全部弄完后执行bin/moodle-docker-compose down整套环境就清理掉了下次按前面的流程重新拉起只需几分钟。环境变量的完整清单在仓库 README.md 的表格里容器定义则散落在 base.yml、db.*.yml、service.mail.yml 这些 Compose 文件中想深入调整时直接对着这些文件读就能看懂每块是怎么拼起来的。【免费下载链接】moodle-dockerA docker environment for moodle developers项目地址: https://gitcode.com/gh_mirrors/mo/moodle-docker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表