用tutor启动docker版本的openedx

一、安装的过程:
     安装教程提到了简易的安装方式,即使用“tutor local quickstart”即可进行镜像下载和启动。该命令会在启动时提示用户输入网站域名等信息,这些信息会被保存在“~.local/share/tutor/env/local”目录中,其中有这个文件比较重要:
~.local/share/tutor/env/local/docker-compose.yml             #存放服务的启动文件
~.local/share/tutor/env/local/docker-compose.jobs.yml     #存放初始化的启动文件
~.local/share/tutor/env/apps/nginx/                                    #存放nginx的配置文件
~.local/share/tutor/env/apps/openedx/                               #存放lms,cms的配置文件

    系统在第一次启动后,需要调用一些初始化函数用于创建数据库,创建数据表和初始化用户等信息。此时会调用上面的”docker-compose.jobs.yml” 文件来执行初始化任务,该文件内容如下:
#docker-compose.jobs.yml
version: “3.7”
services:
    mysql-job:
      image: docker.io/mysql:5.6.36
      entrypoint: []
      command: [“echo”, “done”]
    lms-job:
      image: docker.io/overhangio/openedx:3.12.1
      environment:
        SERVICE_VARIANT: lms
        SETTINGS: ${EDX_PLATFORM_SETTINGS:-tutor.production}
      volumes:
        – ../apps/openedx/settings/lms/:/openedx/edx-platform/lms/envs/tutor/:ro
        – ../apps/openedx/settings/cms/:/openedx/edx-platform/cms/envs/tutor/:ro
        – ../apps/openedx/config/:/openedx/config/:ro
    cms-job:
      image: docker.io/overhangio/openedx:3.12.1
      environment:
        SERVICE_VARIANT: cms
        SETTINGS: ${EDX_PLATFORM_SETTINGS:-tutor.production}
      volumes:
        – ../apps/openedx/settings/lms/:/openedx/edx-platform/lms/envs/tutor/:ro
        – ../apps/openedx/settings/cms/:/openedx/edx-platform/cms/envs/tutor/:ro
        – ../apps/openedx/config/:/openedx/config/:ro
    forum-job:
      image: docker.io/overhangio/openedx-forum:3.12.1
      environment:
        SEARCH_SERVER: “http://elasticsearch:9200”
        MONGODB_AUTH: “”
        MONGODB_HOST: “mongodb”
        MONGODB_PORT: “27017”
       从上述文件看到openedx有三个初始化任务,分别时mysql、lms、cms和forum。本文看似什么都不做,其实际上是调用了tutor仓库中hooks目录内的函数来生成执行的命令,如下的内容是在调用“tutor local quickstart”命令生成的。
       对mysql执行信息如下:
================================================
        Database creation and migrations
================================================
Initialising all services…
docker-compose -f /home/hyt/.local/share/tutor/env/local/docker-compose.yml –project-name tutor_local -f /home/hyt/.local/share/tutor/env/local/docker-compose.jobs.yml run –rm mysql-job sh -e -c echo “Initialising MySQL…”
mysql_connection_max_attempts=10
mysql_connection_attempt=0
until mysql -u root –password=”D2Zz0xj3″ –host “mysql” –port 3306 -e ‘exit’
do
    mysql_connection_attempt=$(expr $mysql_connection_attempt + 1)
    echo ”    [$mysql_connection_attempt/$mysql_connection_max_attempts] Waiting for MySQL service (this may take a while)…”
    if [ $mysql_connection_attempt -eq $mysql_connection_max_attempts ]
    then
      echo “MySQL initialisation error” 1>&2
      exit 1
    fi
    sleep 10
done
echo “MySQL is up and running”
mysql -u root –password=”D2Zz0xj3″ –host “mysql” –port 3306 -e ‘CREATE DATABASE IF NOT EXISTS openedx;’
mysql -u root –password=”D2Zz0xj3″ –host “mysql” –port 3306 -e ‘GRANT ALL ON openedx.* TO “openedx”@”%” IDENTIFIED BY “uR0gGcbb”;’
      对lms执行信息如下:
Initialising lms…
docker-compose -f /home/hyt/.local/share/tutor/env/local/docker-compose.yml –project-name tutor_local -f /home/hyt/.local/share/tutor/env/local/docker-compose.jobs.yml run –rm lms-job sh -e -c dockerize -wait tcp://mysql:3306 -timeout 20s
export DJANGO_SETTINGS_MODULE=$SERVICE_VARIANT.envs.$SETTINGS
echo “Loading settings $DJANGO_SETTINGS_MODULE”
./manage.py lms migrate
./manage.py lms create_oauth2_client \
    “http://androidapp.com” “http://androidapp.com/redirect” public \
    –client_id android –client_secret VfzhH0Zwkve97z8s6aK19ImY \
    –trusted
# Fix incorrect uploaded file path
if [ -d /openedx/data/uploads/ ]; then
  if [ -n “$(ls -A /openedx/data/uploads/)” ]; then
    echo “Migrating LMS uploaded files to shared directory”
    mv /openedx/data/uploads/* /openedx/media/
    rm -rf /openedx/data/uploads/
  fi
fi
2020/04/29 07:51:17 Waiting for: tcp://mysql:3306
2020/04/29 07:51:17 Connected to tcp://mysql:3306
Loading settings lms.envs.tutor.production
    对cms执行信息如下:
Initialising cms…
docker-compose -f /home/hyt/.local/share/tutor/env/local/docker-compose.yml –project-name tutor_local -f /home/hyt/.local/share/tutor/env/local/docker-compose.jobs.yml run –rm cms-job sh -e -c dockerize -wait tcp://mysql:3306 -timeout 20s
export DJANGO_SETTINGS_MODULE=$SERVICE_VARIANT.envs.$SETTINGS
echo “Loading settings $DJANGO_SETTINGS_MODULE”
./manage.py cms migrate
# Fix incorrect uploaded file path
if [ -d /openedx/data/uploads/ ]; then
  if [ -n “$(ls -A /openedx/data/uploads/)” ]; then
    echo “Migrating CMS uploaded files to shared directory”
    mv /openedx/data/uploads/* /openedx/media/
    rm -rf /openedx/data/uploads/
  fi
fi
2020/04/29 07:59:21 Waiting for: tcp://mysql:3306
2020/04/29 07:59:21 Connected to tcp://mysql:3306
Loading settings cms.envs.tutor.production
     对forum执行信息如下:
Initialising forum…
docker-compose -f /home/hyt/.local/share/tutor/env/local/docker-compose.yml –project-name tutor_local -f /home/hyt/.local/share/tutor/env/local/docker-compose.jobs.yml run –rm forum-job sh -e -c export MONGOHQ_URL=”mongodb://$MONGODB_AUTH$MONGODB_HOST:$MONGODB_PORT/cs_comments_service”
bundle exec rake search:initialize
bundle exec rake search:rebuild_index
Waiting for mongodb/elasticsearch…
2020/04/29 07:59:46 Waiting for: tcp://mongodb:27017
2020/04/29 07:59:46 Waiting for: http://elasticsearch:9200
2020/04/29 07:59:46 Connected to tcp://mongodb:27017
2020/04/29 07:59:46 Received 200 from http://elasticsearch:9200
二、安装完成后有两个命令:
tutor local start  #实际调用了
docker-compose -f /home/hyt/.local/share/tutor/env/local/docker-compose.yml –project-name tutor_local up –remove-orphans  #可以加个 -d
tutor local stop   #实际调用了
docker-compose -f /home/hyt/.local/share/tutor/env/local/docker-compose.yml –project-name tutor_local rm –stop –force

发表评论

电子邮件地址不会被公开。 必填项已用*标注