
hapiproject/hapi本镜像基于 HAPI-FHIR JPA Server 启动项目构建,提供了一种便捷的方式部署 FHIR (Fast Healthcare Interoperability Resources) 服务器。该镜像封装了 HAPI FHIR JPA 模块的核心功能,支持通过 Docker 快速启动和配置 FHIR 服务,适用于***健康数据交换、***系统集成等场景。
拉取镜像
获取最新版本镜像:
bashdocker pull hapiproject/hapi:latest
如需指定版本,可替换 latest 为具体版本标签(如 v5.7.0)。
运行容器
使用默认配置启动容器,映射容器 8080 端口到主机 8080 端口:
bashdocker run -p 8080:8080 hapiproject/hapi:latest
服务启动后,可通过 http://localhost:8080 访问 Web UI,通过 http://localhost:8080/fhir/metadata 查看 FHIR 元数据。
如需使用非默认端口(如 8888),调整端口映射参数:
bashdocker run -p 8888:8080 hapiproject/hapi:latest
此时服务访问地址为 http://localhost:8888。
可通过 -e 参数传递环境变量修改默认配置,例如设置默认编码格式为 XML:
bashdocker run -p 8080:8080 -e hapi.fhir.default_encoding=xml hapiproject/hapi:latest
支持的环境变量对应 application.yaml 中的配置项,可参考 配置文件。
准备配置文件
创建本地配置文件(如 custom-application.yaml),修改所需配置(如数据库连接)。
挂载配置文件启动
使用 -v 参数挂载本地配置文件到容器,并通过 SPRING_CONFIG_LOCATION 指定配置路径:
bashdocker run -p 8080:8080 \ -v $(pwd)/custom-application.yaml:/configs/application.yaml \ -e SPRING_CONFIG_LOCATION=file:///configs/application.yaml \ hapiproject/hapi:latest
创建 docker-compose.yml 文件,示例配置如下(包含 MySQL 数据库):
yamlversion: '3.7' services: web: image: "hapiproject/hapi:latest" ports: - "8090:8080" environment: SPRING_CONFIG_LOCATION: 'file:///data/hapi/application.yaml' volumes: - hapi-data:/data/hapi depends_on: - mysql mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: hapi MYSQL_USER: admin MYSQL_PASSWORD: admin volumes: - mysql-data:/var/lib/mysql volumes: hapi-data: external: true mysql-data: external: true
启动服务:
bashdocker-compose up -d
修改配置文件,替换默认 H2 数据库为 MySQL:
yamlspring: datasource: url: 'jdbc:mysql://mysql:3306/hapi' # 容器内访问 MySQL 服务名(如 docker-compose 中的 mysql) username: admin password: admin driverClassName: com.mysql.jdbc.Driver jpa: hibernate: physical_naming_strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
注意:MySQL 容器需设置 lower_case_table_names=1 以避免大小写敏感问题。
配置文件示例:
yamlspring: datasource: url: 'jdbc:postgresql://postgresql:5432/hapi' username: admin password: admin driverClassName: org.postgresql.Driver
启用 Elasticsearch 用于索引和搜索:
yamlelasticsearch: enabled: true rest_url: elasticsearch:9200 # Elasticsearch 服务地址 username: elastic password: changeme protocol: http required_index_status: YELLOW schema_management_strategy: CREATE
在配置文件中启用订阅:
yamlhapi: fhir: subscription: resthook_enabled: true # 启用 REST Hook 订阅 *** enabled: true # 启用邮件订阅 host: smtp.example.com port: 587 username: *** password: password
启用 MDM 并配置匹配规则:
yamlhapi: fhir: mdm_enabled: true # 启用 MDM
MDM 匹配规则通过 src/main/resources/mdm-rules.json 配置,需根据实际数据需求自定义规则。
启用 CQL 执行功能:
yamlhapi: fhir: cql_enabled: true
为减小镜像体积并提升安全性,可构建基于 Distroless 的镜像变体:
bashdocker build --target=release-distroless -t hapi-fhir:distroless .
Distroless 镜像已自动发布到 Docker Hub,标签格式为 hapiproject/hapi:<版本>-distroless。
默认缓存时间为 6000 毫秒,可通过配置文件调整:
yamlhapi: fhir: reuse_cached_search_results_millis: 3000 # 设置为 3 秒 # reuse_cached_search_results_millis: -1 # 禁用缓存
需同时启用 Elasticsearch 和 LastN:
yamlhapi: fhir: lastn_enabled: true elasticsearch: enabled: true # 依赖 Elasticsearch
Web UI 基于 Thymeleaf 模板,可通过修改 src/main/webapp/WEB-INF/templates 目录下的模板文件自定义界面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务