如何使用Docker容器部署Moodle在线学习平台教程

星瑶君_6704

星瑶君_6704

2026-04-30

1053人浏览

原创

最稳妥方式是拆分为独立容器:数据库(MariaDB/MySQL)、PHP应用(含Apache或FPM)、Web代理(Nginx),通过docker-compose.yml编排;禁用自动初始化(MOODLE_DOCKER_SKIP_INIT=1),浏览器访问完成标准安装向导。

如何使用docker容器部署moodle在线学习平台教程

用 Docker 部署 Moodle 最稳妥的方式是拆分为独立容器:数据库(MariaDB/MySQL)、PHP 应用(含 Apache 或 FPM)、Web 代理(Nginx),再通过 docker-compose.yml 编排。不推荐直接运行单体镜像(如 moodle/moodle),它缺乏持久化控制和初始化灵活性,容易在升级或重装时丢失配置。

选对核心镜像组合

官方不提供“一键安装”的完整 Moodle 容器,需自行组合可信镜像:

  • 数据库:用 mariadb:10.6(轻量、兼容 PHP 8.1+)或 mysql:8.0;避免 mariadb:10.1 等老旧版本,否则可能缺失 required MySQL 8 特性或 PHP 扩展支持
  • PHP 层:优先选 moodlehq/moodle-php-apache:8.1(Moodle 官方维护),已预装 gd、mbstring、xml、opcache、zip、curl、intl 等必需扩展
  • Web 层(推荐):加 nginx:alpine 反向代理,静态资源由 Nginx 直接服务,PHP 请求转发至 PHP 容器,降低 Apache 负载并提升响应速度

准备持久化存储与网络

Moodle 运行依赖三类持久数据,必须挂载命名卷(不建议仅用宿主机路径):

  • moodle_code:挂载到 /var/www/html,存放 Moodle 源码(可从 Git 克隆后映射)
  • moodle_data:挂载到 /var/www/moodledata,存储上传文件、缓存、插件数据等运行时内容
  • moodle_db:挂载到 /var/lib/mysql,确保数据库状态不随容器销毁而丢失
  • 创建专用网络:docker network create moodle-net,所有容器加入该网络,用服务名(如 db)互相访问,无需暴露宿主机端口给数据库

编写 docker-compose.yml 编排文件

以下是最小可行配置(关键项已注释):

Docker Compose Optimizer
Docker Compose Optimizer

优化 Docker Compose 配置,适用于开发和生产环境——审计服务、网络、卷、健康检查和资源管理。

下载

version: '3.8'
services:
db:
image: mariadb:10.6
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: moodle
MYSQL_USER: moodleuser
MYSQL_PASSWORD: moodlepass
volumes:
- moodle_db:/var/lib/mysql
command: --max-allowed-packet=64M
php:
image: moodlehq/moodle-php-apache:8.1
restart: unless-stopped
depends_on: [db]
volumes:
- moodle_code:/var/www/html
- moodle_data:/var/www/moodledata
- ./php.ini:/usr/local/etc/php/php.ini:ro
environment:
MOODLE_DB_TYPE: mysqli
MOODLE_DB_HOST: db
MOODLE_DB_NAME: moodle
MOODLE_DB_USER: moodleuser
MOODLE_DB_PASS: moodlepass
MOODLE_WWWROOT: https://your-domain.com
MOODLE_DOCKER_SKIP_INIT: "1"
web:
image: nginx:alpine
restart: unless-stopped
ports: ["80:80", "443:443"]
volumes:
- moodle_code:/var/www/html:ro
- moodle_data:/var/www/moodledata:ro
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on: [php]
volumes:
moodle_code:
moodle_data:
moodle_db:

启动并完成浏览器安装

执行 docker-compose up -d 启动全部服务后,注意两点:

  • 环境变量 MOODLE_DOCKER_SKIP_INIT="1" 已禁用自动初始化,所以不会跳转到安装页——这是预期行为,避免因数据库未就绪导致失败
  • 用浏览器访问 http://your-domain.com(或 http://localhost),会进入标准 Moodle 安装向导,按提示填写数据库信息(主机名填 db,用户名/密码与 db 容器中一致)即可完成部署
  • 首次安装成功后,/var/www/moodledata 中会生成 config.php,后续重启容器将复用该配置,无需重复安装

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

765

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6179

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

7277

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2853

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

319

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

471

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

440

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

325

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

505

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习