本镜像为DesignSafe-CI Portal提供Docker化部署支持,旨在通过Docker和Docker Compose简化门户应用的部署、开发和测试流程。该门户支持Agave API集成、用户认证、数据管理等核心功能,适用于开发环境的本地部署和测试场景。
运行DesignSafe-CI Portal需使用Docker和Docker Compose,需预先在目标系统安装以下工具:
注意:Mac或Windows用户推荐安装Docker Toolbox,该工具会同时安装Docker、Docker Compose及Docker Machine(在Mac/Windows主机运行Docker必需)。
bash$ git clone [***] $ cd portal
bash$ docker-compose build
复制环境变量示例文件并修改为自定义配置:
bash$ cp designsafe.env.sample designsafe.env
必填环境变量:
DJANGO_DEBUG:开发环境设为TrueDJANGO_SECRET:生产环境需修改为自定义密钥TAS_*:配置后启用django.contrib.admin直接访问AGAVE_*:配置后启用Agave API集成(认证等)RT_*:配置后启用工单系统bash# 启动容器 $ docker-compose up -d # 进入Django容器 $ docker exec -it portal_django_1 bash # 数据库迁移 # ./manage.py migrate # 创建超级用户 # ./manage.py createsuperuser
bash$ docker-machine ip default # "default"为虚拟机名称 192.168.99.100 # 示例输出,访问 [***]
证书文件位于conf/nginx/certs目录下,根据操作系统执行以下步骤:
$PROJECT/conf/nginx/certs目录,选择ca.pembash$ cd $PROJECT/conf/nginx/certs $ sudo mkdir /usr/local/share/ca-certificates/extra $ sudo cp ca.pem /usr/local/share/ca-certificates/extra/designsafeCA.pem $ sudo update-ca-certificates
$PROJECT/conf/nginx/certs,选择ca.pembash$ sudo apt-get install libnss3-tools # 或使用对应系统的包管理器 $ certutil -A -n "designsafeCA" -t "TCu,Cu,Tu" -i ca.pem -d ${DBDIR}
注:
${DBDIR}因浏览器而异,详情参考:
- Chromium: Linux证书管理
- Firefox: 配置文件位置
生成CA的RSA-2048密钥(仓库中已包含):
bash$ openssl genrsa -des3 -out ca.key 2048
生成根CA证书(有效期365天):
bash$ openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.pem
所有表单值建议设为"Designsafe CA"
生成网站RSA-2048密钥(仓库中已包含):
bash$ openssl genrsa -out designsafe.dev.key 2048
生成证书签名请求(CSR):
bash$ openssl req -new -key designsafe.dev.key -out designsafe.dev.csr
所有表单值建议设为"Designsafe CA"
确保designsafe.dev.ext配置正确,生成网站证书:
bash$ openssl x509 -req -in designsafe.dev.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out designsafe.dev.crt -days 365 -sha256 -extfile designsafe.dev.ext
生成的文件包括:
designsafe.dev.key(网站私钥)designsafe.dev.csr(网站证书签名请求)designsafe.dev.crt(网站证书)ca.key(CA私钥)ca.pem(CA证书)如需将生产环境数据导入本地SQLite开发实例,需先使用Django的dumpdata命令创建datadump.json文件。
使用生产环境配置文件导出数据:
bash$ docker run -it --rm -v $(pwd):/datadump \ --env-file /path/to/production/designsafe.env \ designsafeci/portal:latest bin/dumpdata.sh
该命令会在当前目录生成datadump-YYYYMMDD.json文件。
警告:请勿使用生产配置执行以下命令,会破坏数据库!
使用本地环境配置文件导入数据:
bash$ docker run -it --rm -v $(pwd):/datadump \ --env-file /path/to/local/designsafe.env \ designsafeci/portal:latest bin/loaddata.sh
导入成功后,当前目录会生成包含数据的SQLite数据库文件db.sqlite3。
更多详情参见Wiki页面
配置文件conf/nginx/designsafe.dev.conf已包含必要配置,执行以下命令创建自签名证书:
bash$ openssl req -config conf/nginx/designsafe.dev.conf -new -sha256 -newkey rsa:2048 -nodes -keyout conf/nginx/designsafe.dev.key -x509 -days 365 -out designsafe.dev.crt
DesignSafe自定义应用应放置于designsafe/apps目录,在Django的settings.py中通过designsafe.apps.{app_name}启用。
样式参考和自定义CSS文档见DesignSafe样式参考。
Django测试需遵循Django测试规范,可通过以下命令在容器中运行:
bash$ docker run -it --rm portal_django python manage.py test --settings=designsafe.test_settings
前端测试使用Jasmine框架和Karma引擎,测试指南见AngularJS单元测试开发指南。确保所有脚本和测试脚本在karma-conf.js中配置,运行命令:
bash$ docker run -it --rm portal_django bin/run-tests.sh
使用docker-compose启动开发环境,默认配置文件docker-compose.yml以开发模式运行Django主服务,并包含Redis服务(用于WebSocket支持),可选择启用EF站点进行测试。
bash$ docker-compose build $ docker-compose up
Agave客户端回调URL需设为:
[***]
如需HTTPS支持(如Bo***集成),使用docker-compose-http.yml配置(包含Nginx代理和自签名证书):
bash$ docker-compose -f docker-compose-http.yml build $ docker-compose -f docker-compose-http.yml up
Agave客户端回调URL需设为:
[***]
删除旧元数据对象:
bash$ metadata-list Q '{"name": "designsafe metadata"}' | while read x; do metadata-delete $x; done;
运行walker.py创建文件系统元数据对象:
bash$ python portal/dsapi/agave/tools/bin/walker.py <command> <api_server> <token> <systemId> <base_folder>
base_folder:通常设为用户名(修复主目录下所有文件)command选项:
files:遍历文件并打印路径meta:以文件系统方式遍历元数据对象并打印路径files-fix:检查每个文件是否有对应元数据对象,无则创建meta-fix:检查每个元数据对象是否有对应文件,无则删除生产环境部署由Ansible管理,详情参见ansible仓库。
bash$ docker-compose build
bash$ docker-compose up -d $ docker exec -it portal_django_1 bash # ./manage.py migrate # ./manage.py createsuperuser
bash$ openssl req -config conf/nginx/designsafe.dev.conf -new -sha256 -newkey rsa:2048 -nodes -keyout conf/nginx/designsafe.dev.key -x509 -days 365 -out designsafe.dev.crt
主要环境变量文件为designsafe.env(从designsafe.env.sample复制而来),关键配置项如下:
| 变量名 | 说明 | 示例值 |
|---|---|---|
DJANGO_DEBUG | 调试模式开关,开发环境设为True | True |
DJANGO_SECRET | Django密钥,生产环境需修改 | your-secure-secret-key |
TAS_* | TAS相关配置,启用管理后台访问 | TAS_URL=[***] |
AGAVE_* | Agave API配置,启用API集成 | AGAVE_URL=[***] |
RT_* | RT工单系统配置,启用工单功能 | RT_URL=[***] |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429