
neicnordic/sda-doaNeIC sda-doa Data Out API是一个用于数据输出的接口服务,主要用于处理文件和数据集的导出请求。该服务集成了REST端点、TLS加密、消息队列(RabbitMQ)、数据库(PostgreSQL)和文件存储(POSIX/S3)等组件,支持JWT身份验证和Crypt4GH加密,提供安全可控的数据导出能力。
适用于需要安全、可控数据导出功能的场景,包括:
以下环境变量用于配置服务行为,可根据部署需求调整:
| 变量名 | 默认值 | 描述 |
|---|---|---|
| REST_ENABLED | true | 启用/禁用REST端点 |
| SSL_ENABLED | true | 启用/禁用REST端点TLS加密 |
| KEYSTORE_PATH | /etc/ega/ssl/server.cert | 服务器密钥库文件路径 |
| KEYSTORE_PASSWORD | 密钥库密码(必填) | |
| OUTBOX_ENABLED | true | 启用/禁用输出存储功能 |
| OUTBOX_TYPE | POSIX | 输出存储类型:POSIX(文件系统)或S3(对象存储) |
| OUTBOX_QUEUE | exportRequests | 文件/数据集导出请求的消息队列名称 |
| OUTBOX_LOCATION | /ega/outbox/p11-%s/files/ | 输出存储路径(含用户名占位符%s) |
| BROKER_HOST | private-mq | RabbitMQ消息队列主机名 |
| BROKER_PORT | 5671 | RabbitMQ消息队列端口 |
| BROKER_VHOST | / | RabbitMQ虚拟主机 |
| BROKER_VALIDATE | true | 是否验证RabbitMQ服务器证书 |
| DB_INSTANCE | db | 数据库主机名 |
| DB_PORT | 5432 | 数据库端口 |
| POSTGRES_DB | lega | 数据库名称 |
| SSL_MODE | verify-full | 数据库连接SSL模式 |
| ROOT_CERT_PATH | /etc/ega/ssl/CA.cert | 数据库连接CA证书路径 |
| CERT_PATH | /etc/ega/ssl/client.cert | 数据库客户端证书路径 |
| CERT_KEY | /etc/ega/ssl/client.key | 数据库客户端密钥路径 |
| POSTGRES_USER | lega_out | 数据库用户名 |
| POSTGRES_PASSWORD | 数据库密码(必填) | |
| S3_ENDPOINT | archive | S3服务器主机名(OUTBOX_TYPE为S3时生效) |
| S3_PORT | 443 | S3服务器端口 |
| S3_ACCESS_KEY | minio | S3访问密钥 |
| S3_SECRET_KEY | miniostorage | S3密钥 |
| S3_REGION | us-west-1 | S3区域 |
| S3_BUCKET | lega | S3存储桶名称 |
| S3_SECURE | true | 是否通过HTTPS访问S3后端 |
| S3_ROOT_CERT_PATH | /etc/ssl/certs/ca-certificates.crt | S3连接CA证书路径 |
| S3_OUT_ENDPOINT | outbox | S3输出存储服务器主机名 |
| S3_OUT_PORT | 443 | S3输出存储服务器端口 |
| S3_OUT_ACCESS_KEY | minio | S3输出存储访问密钥 |
| S3_OUT_SECRET_KEY | miniostorage | S3输出存储密钥 |
| S3_OUT_REGION | us-west-1 | S3输出存储区域 |
| S3_OUT_BUCKET | lega | S3输出存储桶名称 |
| S3_OUT_SECURE | true | 是否通过HTTPS访问S3输出存储后端 |
| S3_OUT_ROOT_CERT_PATH | /etc/ssl/certs/ca-certificates.crt | S3输出存储连接CA证书路径 |
| ARCHIVE_PATH | / | 文件系统归档路径(OUTBOX_TYPE为POSIX时生效) |
| PASSPORT_PUBLIC_KEY_PATH | /etc/ega/jwt/passport.pem | Passport JWT验证公钥路径 |
| OPENID_CONFIGURATION_URL | [***] | OpenID配置端点URL |
| USERINFO_ENDPOINT_URL | [***] | /userinfo端点URL(用于不透明令牌) |
| VISA_PUBLIC_KEY_PATH | /etc/ega/jwt/visa.pem | Visa JWT验证公钥路径 |
| CRYPT4GH_PRIVATE_KEY_PATH | /etc/ega/crypt4gh/key.pem | Crypt4GH私钥路径 |
| CRYPT4GH_PRIVATE_KEY_PASSWORD_PATH | /etc/ega/crypt4gh/key.pass | Crypt4GH私钥密码路径 |
| LOGSTASH_HOST | Logstash实例主机名(可选,为空则不启用) | |
| LOGSTASH_PORT | Logstash实例端口(可选,为空则不启用) |
可通过环境变量配置不同组件的日志级别,格式为LOGGING_LEVEL_<包名>(包名中的.需替换为_)。示例:
LOGGING_LEVEL_ORG_SPRINGFRAMEWORK=OFFLOGGING_LEVEL_NO_UIO_IFI=DEBUG以下是在Docker Swarm中部署sda-doa服务的示例配置:
yaml... doa: image: neicnordic/sda-doa:latest ports: - 443:8080 # 映射容器8080端口到主机443端口(HTTPS服务) deploy: restart_policy: condition: on-failure # 失败时自动重启 delay: 5s # 重启延迟时间 window: 120s # 稳定性观察窗口 environment: - S3_PORT # 引用外部定义的S3端口变量 - KEYSTORE_PASSWORD=${SERVER_CERT_PASSWORD} # 从环境变量注入密钥库密码 - DB_INSTANCE=${DB_HOST} # 从环境变量注入数据库主机 - POSTGRES_DB=${DB_DATABASE_NAME} # 从环境变量注入数据库名称 - POSTGRES_PASSWORD=${DB_LEGA_OUT_PASSWORD} # 从环境变量注入数据库密码 - S3_ACCESS_KEY=${MINIO_ACCESS_KEY} # 从环境变量注入S3访问密钥 - S3_SECRET_KEY=${MINIO_SECRET_KEY} # 从环境变量注入S3密钥 - LOGSTASH_HOST # 引用外部定义的Logstash主机 - LOGSTASH_PORT # 引用外部定义的Logstash端口 secrets: # 挂载证书和密钥文件(需预先创建Docker Secrets) - source: rootCA.pem target: /etc/ega/ssl/CA.cert # 数据库CA证书 - source: rootCA.pem target: /etc/ssl/certs/ca-certificates.crt # S3 CA证书 - source: server.p12 target: /etc/ega/ssl/server.cert # 服务器密钥库 - source: client.pem target: /etc/ega/ssl/client.cert # 数据库客户端证书 - source: client-key.der target: /etc/ega/ssl/client.key # 数据库客户端密钥 - source: jwt.pub.pem target: /etc/ega/jwt/passport.pem # Passport JWT公钥 - source: jwt.pub.pem target: /etc/ega/jwt/visa.pem # Visa JWT公钥 - source: ega.sec.pem target: /etc/ega/crypt4gh/key.pem # Crypt4GH私钥 - source: ega.sec.pass target: /etc/ega/crypt4gh/key.pass # Crypt4GH私钥密码 ...
部署前需确保所有引用的secrets(如rootCA.pem、server.p12等)已在Docker Swarm中创建。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务