
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像为DesignSafe-CI Portal提供Docker化部署支持,旨在通过Docker和Docker Compose简化门户应用的部署、开发和测试流程。该门户支持Agave API集成、用户认证、数据管理等核心功能,适用于开发环境的本地部署和测试场景。
运行DesignSafe-CI Portal需使用https://docs.docker.com/和https://docs.docker.com/compose/,需预先在目标系统安装以下工具:
注意:Mac或Windows用户推荐安装https://www.docker.com/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: https://chromium.googlesource.com/chromium/src/+/master/docs/linux_cert_management.md
- Firefox: https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data
创建本地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 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务