本镜像为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必需)。
1. 克隆仓库
bash$ git clone https://github.com/DesignSafe-CI/portal.git $ cd portal
2. 构建容器
bash$ docker-compose build
3. 配置环境变量
复制环境变量示例文件并修改为自定义配置:
bash$ cp designsafe.env.sample designsafe.env
必填环境变量:
DJANGO_DEBUG:开发环境设为TrueDJANGO_SECRET:生产环境需修改为自定义密钥TAS_*:配置后启用django.contrib.admin直接访问AGAVE_*:配置后启用Agave API集成(认证等)RT_*:配置后启用工单系统4. 设置本地/测试数据库
bash# 启动容器 $ docker-compose up -d # 进入Django容器 $ docker exec -it portal_django_1 bash # 数据库迁移 # ./manage.py migrate # 创建超级用户 # ./manage.py createsuperuser
5. 访问门户
bash$ docker-machine ip default # "default"为虚拟机名称 192.168.99.100 # 示例输出,访问 http://192.168.99.100:8000
安装本地CA
证书文件位于conf/nginx/certs目录下,根据操作系统执行以下步骤:
OSX
$PROJECT/conf/nginx/certs目录,选择ca.pemLinux
bash$ 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
Firefox UI
$PROJECT/conf/nginx/certs,选择ca.pemFirefox CLI(未测试)
bash$ sudo apt-get install libnss3-tools # 或使用对应系统的包管理器 $ certutil -A -n "designsafeCA" -t "TCu,Cu,Tu" -i ca.pem -d ${DBDIR}
注:
${DBDIR}因浏览器而异,详情参考:
- Chromium: Linux证书管理
- Firefox: 配置文件位置
创建本地CA和签名证书
生成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。
更多详情参见https://github.com/DesignSafe-CI/portal/wiki/Importing-data-from-Production-to-Development
重新创建自签名证书
配置文件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
自定义应用(Apps)
DesignSafe自定义应用应放置于designsafe/apps目录,在Django的settings.py中通过designsafe.apps.{app_name}启用。
CSS/样式
样式参考和自定义CSS文档见https://github.com/DesignSafe-CI/portal/wiki/CSS-Styles-Reference。
Django测试
Django测试需遵循Django测试规范,可通过以下命令在容器中运行:
bash$ docker run -it --rm portal_django python manage.py test --settings=designsafe.test_settings
前端测试
前端测试使用http://jasmine.github.io/1.3/introduction.html框架和http://karma-runner.github.io/0.12/intro/installation.html,测试指南见AngularJS单元测试开发指南。确保所有脚本和测试脚本在karma-conf.js中配置,运行命令:
bash$ docker run -it --rm portal_django bin/run-tests.sh
使用docker-compose启动开发环境,默认配置文件docker-compose.yml以开发模式运行Django主服务,并包含Redis服务(用于WebSocket支持),可选择启用EF站点进行测试。
基本开发配置(HTTP)
bash$ docker-compose build $ docker-compose up
Agave客户端回调URL需设为:
http://$DOCKER_HOST_IP:8000/auth/agave/callback/
HTTPS配置(需Nginx代理)
如需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需设为:
https://$DOCKER_HOST_IP:8000/auth/agave/callback/
Agave文件系统设置
删除旧元数据对象:
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管理,详情参见https://github.com/designsafe-ci/ansible%E3%80%82
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=https://tas.example.com |
AGAVE_* | Agave API配置,启用API集成 | AGAVE_URL=https://agave.example.com |
RT_* | RT工单系统配置,启用工单功能 | RT_URL=https://rt.example.com |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务