跳转至

使用 Docker 组合

本页面记录了使用 Docker Compose 运行 ZJUI-Learn 的基本步骤。它不涵盖生产使用的重要信息,例如数据库备份或高可用性。

入门

按照步骤使用本地源代码安装ZJUI-Learn。然后在根文件夹中运行此命令:

docker compose -f docker-compose-production.yml up

然后从端口3000访问ZJUI-Learn。

配置

ZJUI-Learn 可以通过存储库根目录中的 config.json 进行配置。

  • 首先在根存储库中创建文件 config.json
  • 将以下行添加到 services.pl.volumes 下的 docker-compose-production.yml 中:

    - ./config.json:/PrairieLearn/config.json
    

config.json 文件应包含 lib/config.ts 中键的适当覆盖。

反向代理

常规设置文档 中了解有关实现反向代理的更多信息。

验证

更多内容请参阅认证文档

管理员用户

  • 通过运行查找正在运行的 ZJUI-Learn 容器的名称

    docker ps
    

    这将输出有关正在运行的容器(s)的多列信息。查找 prairielearn/prairielearn 映像并复制其相应的名称。例如,此 docker ps 输出中的 ZJUI-Learn 容器的名称为 upbeat_roentgen

    CONTAINER ID  IMAGE                      COMMAND              CREATED      STATUS      PORTS                   NAMES
    e0f522f41ea4  prairielearn/prairielearn  "/bin/sh -c /Prai…"  2 hours ago  Up 2 hours  0.0.0.0:3000->3000/tcp  upbeat_roentgen
    
  • 通过运行以下命令在 ZJUI-Learn 容器中打开 shell

    docker exec -it CONTAINER_NAME /bin/bash
    

然后按照管理员用户 来设置ZJUI-Learn。

添加 SSH 密钥

要通过 GitHub 获取课程,我们需要在容器中配置 SSH 密钥。每次容器被销毁时,密钥都会丢失,因此我们需要使密钥与Host相同。

在主机系统上运行命令

ssh-keygen

这将生成一个新密钥。将其保存在您会记得的地方。接下来,您必须将这些密钥绑定安装到 Docker 容器中。在docker-compose-production.yml下的volumes添加

- /host/path/to/.ssh:/root/.ssh

要查看公钥,请运行命令

cat ~/.ssh/id_rsa.pub

接下来要在 GitHub 上添加 SSH 密钥,请转到 profile settings 下的 SSH 密钥。添加标题,然后将公钥复制到 Key 字段中。

添加课程

添加课程是通过 GitHub 存储库完成的。建议在一个用户下建立一个组织,您可以向其中添加所有课程。

确保在 Docker 容器出现故障时课程仍然存在 我们必须将存储课程的文件夹绑定挂载到主机上,在volumes下的docker-compose-production.yml中添加

- host/place/to/store/courses/:/container_courses_dir/

创建课程后,在 ZJUI-Learn 上转到 Admin,然后向下滚动到 Courses。这里点击Add Course。添加相关信息,特别注意Path下使用绑定挂载路径。

例如:

Path: /container_courses_dir/mycourse

要将课程克隆到 ZJUI-Learn:

  • 转到您想要放在 ZJUI-Learn 上的课程 GitHub 存储库,单击 code,然后单击 SSH
  • 复制 SSH URL 并将其粘贴到 Repository 部分下。返回主页,您应该可以看到那里的课程。
  • 单击课程,然后单击 Sync
  • 单击 Pull from remote git repository,然后将所有文件克隆到指定目录中。

支持

请参阅此处了解额外信息