专属
文档
插件
助手
邀请
顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像

交易
充值流量我的订单

文档

工具

功能
提交工单页面收录

帮助
轩辕镜像免费版

其他
关于我们网站地图
热门搜索:
oodikone2-backend

toska/oodikone2-backend

自动构建
toska

Oodikone2后端服务,用于处理学生数据和课程信息,支持开发、测试及生产环境部署,基于Docker和docker-compose构建,集成PostgreSQL数据库与Redis缓存。

下载次数: 0状态:自动构建维护者:toska仓库类型:镜像最近更新:2 年前
让 AI 帮你使用轩辕镜像? · 展开查看说明

如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。

只需在 AI 对话中先发送下面这句话即可:

请先完整阅读并严格遵守以下文档中的全部规则与要求:

https://xuanyuan.cloud/agents.md

在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。

查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。

轩辕镜像,加速的不只是镜像。点击查看
中文简介
标签下载
镜像标签列表与下载命令
轩辕镜像,加速的不只是镜像。点击查看

oodikone2-backend

Master: ![Build Status]([***]

Trunk: ![Build Status]([***]

镜像概述和主要用途

oodikone2-backend是赫尔辛基大学计算机科学系Oodikone2系统的后端服务,主要用于处理学生数据、课程信息管理、教师排行榜统计及DEFA报告生成等功能。该服务基于Docker容器化部署,支持开发、测试和生产环境,集成PostgreSQL数据库和Redis缓存,提供稳定的数据处理和存储能力。

核心功能和特性

  • 数据库集成:使用PostgreSQL存储学生、课程等核心数据,支持数据备份与恢复
  • 缓存机制:通过Redis实现数据缓存,提升系统性能
  • 学生数据更新:从WebOodi获取并更新学生信息,包括学生列表和详细信息
  • 教师排行榜统计:计算并更新不同学年的教师排行榜数据
  • DEFA报告生成:聚合DEFA学生数据,生成CSV格式报告
  • 多环境支持:支持开发、测试、staging和生产环境部署
  • 自动化部署:通过Travis CI实现镜像自动构建和推送

使用场景和适用范围

  • 开发环境:开发人员本地构建和测试后端服务
  • 测试环境:运行自动化测试,验证功能正确性
  • 生产环境:部署到服务器,处理实际业务数据
  • 数据管理:数据库备份、恢复及学生数据更新
  • 统计分析:生成教师排行榜和DEFA报告

详细使用方法和配置说明

开发环境设置

前提条件

安装Docker CE和docker-compose:

  • Docker CE:安装指南
  • docker-compose:安装指南

创建docker-compose.yml

创建包含PostgreSQL和Redis的docker-compose配置文件:

yaml
version: '3'

services:
  db:
    image: postgres:9.6.3
    ports:
      - "5421:5432"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    container_name: oodi_db
  redis:
    image: redis
    command: ["redis-server", "--appendonly", "yes"]
    ports:
      - "6379:6379"
    volumes:
      - ./redis-data:/data
    container_name: redis

启动服务

启动PostgreSQL和Redis容器:

bash
docker-compose up -d

数据库配置

  1. 从服务器复制备份文件:
bash
scp oodikone.cs.helsinki.fi:/home/tkt_oodi/backups/2018-08-01.bak <本地目录>
  1. 创建数据库:
bash
docker exec -u postgres oodi_db psql -c "CREATE DATABASE tkt_oodi"
  1. 恢复数据:
bash
cat 2018-08-01.bak | docker exec -i oodi_db psql -U postgres -d tkt_oodi
  1. 验证数据:
bash
docker exec -it -u postgres oodi_db psql -d tkt_oodi
\dt  # 查看表结构
  1. 创建测试数据库:
bash
docker exec -u postgres oodi_db psql -c "CREATE DATABASE tkt_oodi_test"
cat test.bak | docker exec -i oodi_db psql -U postgres -d tkt_oodi_test

安装Node.js和项目依赖

  1. 安装Node.js:下载地址

  2. 克隆仓库并安装依赖:

bash
git clone git@github.com:UniversityOfHelsinkiCS/oodikone2-backend.git
cd oodikone2-backend
npm install

配置环境变量

创建.env文件:

DB_URL=postgres://postgres@localhost:5421/tkt_oodi
TEST_DB=postgres://postgres@localhost:5421/tkt_oodi_test
FRONT_URL=http://localhost:8000
REDIS=localhost
TOKEN_SECRET=IWannaBeTheVeryBest

初始化Redis

bash
npm run init_redis
npm run seed_redis

运行服务

开发模式

bash
npm run dev

测试模式

bash
npm test

部署流程

部署策略

  • 始终先部署到staging环境
  • 从trunk合并到master分支时,Travis自动构建并推送staging镜像
  • 在master分支创建release或tag时,Travis自动构建并推送生产镜像

更新步骤

  1. 登录服务器:
bash
ssh {用户名}@oodikone.cs.helsinki.fi
  1. 切换用户:
bash
sudo su - tkt_oodi
  1. 进入对应目录:
bash
cd oodikone.cs.helsinki.fi  # 生产环境
# 或
cd oodikone.cs.helsinki.fi/staging  # staging环境
  1. 运行更新脚本:
bash
./update.sh

数据库恢复

当数据库出现问题时,可按以下步骤恢复:

  1. 删除当前数据库:
bash
docker exec -u postgres oodi_db dropdb tkt_oodi
  1. 从服务器复制备份文件(同开发环境设置步骤)

  2. 重新创建数据库并恢复数据(同开发环境设置步骤)

访问生产/Staging数据库

直接访问

bash
# 生产环境
docker exec -it -u postgres db psql -d tkt_oodi

# Staging环境
docker exec -it -u postgres db_staging psql -d tkt_oodi_staging

备份信息

  • 生产数据库每日自动备份,存储路径:/var/toska/tkt_oodi/backups/postgres/
  • 最新备份符号链接:/home/tkt_oodi/backups/latest-pg.bak.bz2

手动创建备份

bash
docker exec -u postgres db pg_dump tkt_oodi > `date +%Y-%m-%d`.bak

数据更新器(Updater)

oodikone2-backend包含从WebOodi获取学生数据的更新脚本,分为学生列表更新器和学生信息更新器,生产和staging环境各有独立的更新器,分别位于/oodikone.cs.helsinki.fi/updater和/oodikone.cs.helsinki.fi/staging/updater目录,容器名称为production_updater和staging_updater(以下用CONTAINER_NAME指代)。

学生列表更新器

用于获取有效学生编号,在updater目录中通过_update_student_list.sh运行,在独立容器中后台执行,可通过graylog或debug.log查看进度。

  • 环境变量:INCREMENT(控制从当前最大学生编号开始搜索的新编号数量,当前未设置)

  • 保存学生编号到文本文件:

bash
docker-compose run -d CONTAINER_NAME node src/services/doo_api_database_updater/student_list_updater.js /updater_files/all_student_numbers.txt

学生信息更新器(数据库更新器)

用于更新数据库中的学生信息:

bash
# 基本用法
docker-compose run -d CONTAINER_NAME npm run update_database

# 可选参数:指定学生编号文件和起始行
docker-compose run -d CONTAINER_NAME npm run update_database file="<文件名>" index=<数字>

***数据与E2E环境

使用https://github.com/UniversityOfHelsinkiCS/oodikone2-cli%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%EF%BC%9A

  1. 为Anonyymioodi私有仓库创建部署密钥,保存为private.key放在cli目录中

  2. 本地开发使用***数据:选择2) Anon setup(可运行E2E测试)

  3. E2E测试:

bash
# 本地运行
npm run cypress:open

# 在ToskaWatch中运行
npm run cypress:run

教师排行榜统计

通过脚本单独计算教师排行榜统计数据:

bash
# 更新学年50(1999-20)到70(2018-19)的教师排名
docker-compose run -d CONTAINER_NAME npm run update_top_teachers from=50 to=70

# 更新单个学年的教师排名(省略to参数)
docker-compose run -d CONTAINER_NAME npm run update_top_teachers from=50

DEFA报告

create_defa_report npm脚本可快速聚合DEFA学生数据并生成CSV格式报告,仅在Oodikone生产服务器上运行有效。

输入文件

输入文件需放置在/home/tkt_oodi/oodikone.cs.helsinki.fi/defa目录(或后端容器中挂载为/usr/src/app/defa的目录):

  • params.json:定义输入/输出文件路径及时间范围

    json
    {
      "out": {
        "report": "/usr/src/app/defa/defa-report.csv",
        "stats": "/usr/src/app/defa/defa-stats.csv"
      },
      "in": {
        "course_ids": "/usr/src/app/defa/ids.txt",
        "included_courses": "/usr/src/app/defa/included.txt",
        "required_courses": "/usr/src/app/defa/required.txt",
        "timeframe": {
          "start": "2018-09-01T01:00:00.000Z",
          "end": "2019-06-30T01:00:00.000Z"
        }
      }
    }
    
  • ids.txt:DEFA课程的courseunitrealisation ID列表

    126240934
    126237007
    126238082
    
  • included.txt:需包含的课程learningopportunity ID列表(AY课程可省略AY前缀以匹配两种形式)

    TKT10002
    TKT10003
    MAT11001
    
  • required.txt:DEFA学生必须完成的课程ID列表(需同时在included.txt中)

运行命令

bash
# 直接执行
docker exec <backend容器> npm run create_defa_report defa/<参数json文件>

# 使用现成脚本
/home/tkt_oodi/oodikone.cs.helsinki.fi/defa/create_report.sh

输出文件

  • defa-report.csv:包含每个DEFA学生的详细信息及所有DEFA学生的汇总信息
  • defa-stats.csv:包含DEFA学生的学分分布情况

旧输出文件会被覆盖,除非已重命名或移动。

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 oodikone2-backend 镜像标签

docker pull docker.xuanyuan.run/toska/oodikone2-backend:<标签>

使用方法:

  • 登录认证方式
  • 免认证方式

DockerHub 原生拉取命令

docker pull toska/oodikone2-backend:<标签>

更多 oodikone2-backend 镜像推荐

penpotapp/backend logo

penpotapp/backend

penpotapp
Penpot后端服务,支持设计与代码协作的开源设计工具后端组件
23 次收藏100万+ 次下载
30 天前更新
okteto/backend logo

okteto/backend

okteto
暂无描述
50万+ 次下载
15 天前更新
docker/docker-model-backend-llamacpp logo

docker/docker-model-backend-llamacpp

Docker 官方工具与组件镜像
暂无描述
2 次收藏5000万+ 次下载
1 个月前更新
sublimesec/strelka-backend logo

sublimesec/strelka-backend

sublimesec
Sublime Security Strelka后端组件,用于文件与邮件安全数据的处理及分析,支持威胁检测与安全监控。
10万+ 次下载
14 天前更新
elestio/taiga-backend logo

elestio/taiga-backend

elestio
Taiga是由Elestio验证和打包的免费开源项目管理工具,适用于跨职能敏捷团队高效协作,提供自动化更新、及时的功能修复和严格的质量控制,确保服务安全稳定运行。
1万+ 次下载
1 个月前更新
dynatrace/easytravel-backend logo

dynatrace/easytravel-backend

dynatrace
Dynatrace easyTravel演示应用的业务后端组件(Java)。
5 次收藏100万+ 次下载
1 年前更新

查看更多 oodikone2-backend 相关镜像

轩辕镜像配置手册

按平台快速找到配置文档

Docker

登录仓库拉取

登录认证 · 私有仓库

专属域名拉取

免登录 · 高速拉取

Linux

Docker 镜像配置

Windows / Mac

Docker Desktop 配置

MacOS OrbStack

OrbStack 容器

Docker Compose

Compose 项目配置

NAS

群晖

Synology 配置

飞牛

fnOS 镜像配置

绿联

绿联 NAS

威联通

QNAP 配置

极空间

极空间 NAS

企业仓库

其他仓库

ghcr · Quay · nvcr

Harbor 镜像源

Proxy Repository 对接

Portainer 镜像源

Registries 配置

Nexus 镜像源

Docker Proxy 缓存

开发工具

Dev Containers

VS Code 开发容器

Podman

Podman 配置指南

Singularity / Apptainer

HPC 科学计算容器

Kubernetes

K8s Containerd

Kubernetes · Containerd

K3s

轻量级集群

面板 / 网络

爱快路由

iKuai 镜像加速

宝塔面板

一键配置镜像源

AI

用 AI 使用轩辕镜像

agents.md · AI 对话 · 提示词

一键安装

一键安装 Docker

Linux Docker 一键安装

需要其他帮助?请查看我们的 常见问题 Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

功能

免费版与专业版区别

功能对比 · 版本选择

支持的镜像仓库

Docker Hub · GCR · GHCR

新手拉取配置

登录 · 专属域名 · 配置

docker search 限制

专属域名 · Hub 搜索

不支持 push

仅支持 pull · 不支持

拉取速度原因

带宽 · 缓存 · 冷热镜像

错误码

402 与流量用尽

402 · 流量包 · 充值

401 认证失败

401 · docker login

manifest unknown

标签错误 · 镜像不存在

410 Gone 排查

410 · Docker 升级

429 限流

免费版 · 请求频率

其他报错

DNS 超时

DNS 解析 · 网络超时

TLS 证书失败

no matching manifest(架构)

账号

失败是否计费

manifest · blob · 计费

申请开发票(企业 / 个人)

企业 · 个人 · 工单

修改登录密码

网站 · 仓库 · 重置

注销账户

工单 · 数据 · 注销

原理

mirrors 不生效

daemon.json · 重启

去掉域名前缀

docker tag · 重命名

指定架构拉取

ARM64 · AMD64 · 多架构

latest 与「最新」

digest · 版本号 · 标签

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
toska/oodikone2-backend
教程轩辕镜像功能与使用教程
价格查看流量套餐与价格
热门查看热门 Docker 镜像推荐
博客Docker 镜像公告与技术博客
官方公众号:源码跳动|官方技术交流群:51517718
官方公众号:源码跳动|官方技术交流群:|问题咨询请:提交工单
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.