
本Docker镜像专为IT-4200 2024秋季学期课程设计,用于封装和运行课程配套的API服务。其核心用途是提供标准化的API运行环境,确保课程相关的开发、测试、作业提交及教学演示过程中环境一致性,简化学生和教师的本地部署流程。
方式1:从Docker Registry拉取(若提供)
bashdocker pull [registry-url]/it4200-class-api:2024-fall
方式2:本地构建(若提供Dockerfile)
bash# 克隆课程代码仓库(假设包含Dockerfile) git clone [课程代码仓库地址] cd [仓库目录] # 构建镜像 docker build -t it4200-class-api:2024-fall .
使用docker run命令启动API服务:
bashdocker run -d \ --name it4200-api \ -p 8080:8080 \ # 端口映射(主机端口:容器端口) -v ./api-data:/app/data \ # 数据持久化(主机目录:容器目录) -e LOG_LEVEL=info \ # 日志级别(debug/info/warn/error) -e API_TIMEOUT=30 \ # 请求超时时间(秒) it4200-class-api:2024-fall
参数说明:
-d:后台运行容器--name:指定容器名称(便于管理)-p:端口映射,默认容器内API服务监听8080端口-v:挂载外部目录到容器内/app/data,用于持久化API数据(如配置文件、日志、作业数据等)-e:设置环境变量(详见4.5节环境变量说明)创建docker-compose.yml文件:
yamlversion: '3.8' services: api: image: it4200-class-api:2024-fall container_name: it4200-api restart: unless-stopped # 容器退出时自动重启(除非手动停止) ports: - "8080:8080" volumes: - ./api-data:/app/data # 数据持久化目录 - ./logs:/app/logs # 日志输出目录(可选) environment: - LOG_LEVEL=info - API_TIMEOUT=30 - DB_CONN_STR=sqlite:///app/data/db.sqlite # 数据库连接字符串(若API依赖数据库) networks: - class-network # 自定义网络(可选,用于与其他服务联动) networks: class-network: driver: bridge
启动服务:
bashdocker-compose up -d
停止服务:
bashdocker-compose down
容器支持通过环境变量自定义服务行为,常用变量如下:
| 环境变量名 | 默认值 | 说明 | 可选值范围 |
|---|---|---|---|
PORT | 8080 | 容器内API服务监听端口 | 1024-65535 |
LOG_LEVEL | info | 日志输出级别 | debug, info, warn, error |
LOG_PATH | /app/logs | 日志文件存储路径 | 容器内可写路径 |
API_TIMEOUT | 30 | HTTP请求超时时间(秒) | 5-300 |
CORS_ENABLED | true | 是否允许跨域请求 | true, false |
DB_CONN_STR | 内置SQLite连接 | 数据库连接字符串(若API依赖数据库) | 取决于数据库类型 |
MAX_REQUEST_SIZE | 10MB | 最大请求体大小 | 1MB-100MB |
服务启动后,通过以下方式验证是否正常运行:
检查容器状态:
bashdocker ps | grep it4200-api # 若状态为Up则表示运行中
访问API健康检查接口(假设提供):
bashcurl http://localhost:8080/health # 预期返回{"status":"ok"}
查看服务日志:
bashdocker logs -f it4200-api # -f参数实时跟踪日志输出
通过-v ./api-data:/app/data挂载的目录包含以下关键数据:
config.yaml)submissions/目录)LOG_PATH)注意:删除容器时,若需保留数据,请勿使用docker rm -v(-v会删除挂载卷)。
定期备份挂载的./api-data目录:
bashtar -czf api-data-backup-$(date +%Y%m%d).tar.gz ./api-data
若启动时提示"Bind for 0.0.0.0:8080 failed",表示主机8080端口已被占用,解决方案:
-p 8081:8080lsof -i:8080找到进程ID后kill -9 [PID]bashdocker logs it4200-api
./api-data目录有读写权限,可执行chmod 755 ./api-dataDB_CONN_STR格式不正确当课程API有版本更新时,重新拉取/构建镜像并重启容器:
bash# 停止并删除旧容器 docker stop it4200-api && docker rm it4200-api # 拉取新镜像(若从Registry获取) docker pull [registry-url]/it4200-class-api:2024-fall # 重新启动容器(使用原参数) docker run -d [原有参数] it4200-class-api:2024-fall
docker rm -f it4200-api && docker rmi it4200-class-api:2024-falldocker-compose.yml中添加对应服务配置并通过DB_CONN_STR等变量关联若使用中遇到问题,可联系课程助教或通过课程LMS平台提交工单。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务