使用 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,然后将所有文件克隆到指定目录中。
支持¶
请参阅此处了解额外信息。