我正在尝试对本地安装的moodle进行docker化,这样当我将moodle提升到“另一个级别”时,我可以更轻松地管理它。将来我会有几个moodle,所以我需要容器来更容易管理它们。
我尝试了几种方法。 我尝试使用 dockerfile 创建我的 onw 映像:
# Use an official PHP runtime as a parent image
FROM php:7.4-apache
# Set the working directory to /var/www/html
WORKDIR /var/www/html
# Copy the contents of your Moodle directory to the container
COPY . /var/www/html
# Install any additional dependencies or PHP extensions if needed
# For example:
# RUN docker-php-ext-install pdo_mysql
# Expose port 80 to the outside world
EXPOSE 80
# Start Apache when the container launches
CMD ["apache2-foreground"]
和 docker-compose.yml:
version: '3.8'
services:
moodle:
image: your-moodle-image-name
ports:
- "8080:80" # Adjust the port mapping as needed
但没有任何作用。
另外,我尝试制作一个同时运行moodle和mariadb的docker-compose.yml文件(但使用bitnami/moodle图像):
version: '2'
services:
mariadb:
image: mariadb
container_name: mariadb2
ports:
- 3306:3306
volumes:
- /srv/dev-disk-by-x/dckcnfg/moodle:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=passroot
- MYSQL_ROOT_USER=root
- MYSQL_DATABASE=moodle
- ALLOW_EMPTY_PASSWORD=yes
moodle:
image: bitnami/moodle
container_name: moodle2
ports:
- 8089:80
# - 8449:443
environment:
- MOODLE_DATABASE_HOST=localhost
- MOODLE_DATABASE_USER=user
- MOODLE_DATABASE_PASSWORD=pass
- MOODLE_DATABASE_NAME=moodle
- ALLOW_EMPTY_PASSWORD=yes
volumes:
- /var/www/html/moodle:/opt/bitnami/moodle
- /var/www/moodledata:/opt/bitnami/moodledata
depends_on:
- mariadb
links:
- mariadb:mariadb
而且它不起作用。 我在 Moodle 日志上看到“尝试连接到数据库服务器”。 我想这是因为我要部署 mariadb 容器,我无法让 mariadb 在容器之外为 Moodle 运行,然后,我永远不会让容器与外部对话。
不用自己动手,有一个 Moodle-HQ 维护的 Docker 项目可能值得研究一下:https://github.com/moodlehq/moodle-docker
我个人已经成功使用说明来使用容器进行手动测试,因为这为您提供了可以与之交互的安装:
# Initialize Moodle database for manual testing
bin/moodle-docker-compose exec webserver php admin/cli/install_database.php --agree-license --fullname="Docker moodle" --shortname="docker_moodle" --summary="Docker moodle site" --adminpass="test" --adminemail="[email protected]"
备注:
- Moodle 配置为监听 http://localhost:8000/。
- Mailpit 正在监听 http://localhost:8000/_/mail 以查看 Moodle 发出的电子邮件。
- 您登录时需要使用的管理员
进行自定义默认为username
。您可以通过admin
--adminuser='myusername'
大部分配置可以通过使用环境变量来改变;我将我的收集到一个
.env.example
文件中,在启动新环境时用作参考:
CODE_DIR=`pwd`
DOCKER_DIR=/var/work/docker-moodle/
export COMPOSE_PROJECT_NAME=moodle
export MOODLE_DOCKER_WEB_PORT=8000
export MOODLE_DOCKER_SELENIUM_VNC_PORT=5900
export MOODLE_DOCKER_WWWROOT="$CODE_DIR"
export MOODLE_DOCKER_DB=pgsql
export MOODLE_DOCKER_DB_PORT=3306