derekmerck.orthanc_docker
Ansible 角色用于 Docker 中的 Orthanc
德里克·梅克
derek_merck@brown.edu
罗德岛医院和布朗大学
普罗维登斯,RI
配置和运行一个 Orthanc DICOM 节点在 Docker 容器中。
依赖项
Galaxy 角色
- geerlingguy.docker 用于设置 Docker 环境
- geerlingguy.pip 用于安装 Python 依赖
- derekmerck.postgres-docker 用于设置 PostgreSQL 后端(如果需要)
本地节点
- Python 加密库,如果密码秘密被加密
远程节点
角色变量
Docker 镜像和标签
orthanc_docker_image: "jodogne/orthanc"
orthanc_docker_image_tag: "latest"
选择一个 Orthanc 镜像和标签。
jodogne/orthanc
是官方的标准 Orthanc for Docker 构建,由 Sébastien Jodogne 维护。jodogne/orthanc-plugins
是官方支持 PostgreSQL 后端的构建(角色使用 PostgreSQL 10 -- trusty 对安装 9.5 的工具有问题)。osimis/orthanc
是第三方的 Osimis for Docker 版本,提供优秀的网页查看和注释功能。derekmerck/orthanc
是来自 DIANA 的第三方多架构(amd64, arm32v7, aarch64)前沿版 Orthanc。它包含 [GDCM][] 用于即时 JPG 压缩。源代码和 Dockerfile 可以在 github 的 xarch-orthanc-docker 项目中找到。derekmerck/orthanc-plugins
是相应的多架构版本,支持 PostgreSQL 后端。
Docker 容器配置
orthanc_container_name: "orthanc"
orthanc_use_data_container: True
orthanc_data_dir: "/data/{{ orthanc_container_name }}"
orthanc_config_dir: "/config/{{ orthanc_container_name }}"
orthanc_api_port: 8042
orthanc_dicom_port: 4242
orthanc_container_timezone: "America/New_York"
服务配置
配置服务。这些变量用于模板配置文件。
orthanc_title: "Orthanc"
orthanc_aet: "ORTHANC"
orthanc_user: "orthanc"
orthanc_password: "passw0rd!"
附加的复杂配置项会被注入到 orthanc.conf
中。它们必须遵循适当的格式(见下文)。
orthanc_users: {}
orthanc_peers: {}
orthanc_modalities: {}
路由配置
可以通过包含一个目的地(对等体)字典来将 Orthanc 配置为路由器。在路由过程中,Orthanc 可以选择匿名化和/或压缩数据。请查看角色 derekmerck/queued-orthanc
的示例,了解如何使用 "DIANA-Watcher" 服务构建更灵活的路由。
orthanc_anonymize: False
orthanc_compress: False
orthanc_destinations: [{dest: peer 或 modality 名称, type: peer 或 dicom}, ..]
PostgreSQL 配置
orthanc_pg_backend: False
orthanc_pg_user: "{{ orthanc_user }}"
orthanc_pg_password: "{{ orthanc_password }}"
orthanc_pg_database: "{{ orthanc_container_name }}"
orthanc_pg_host: "postgres"
orthanc_pg_port: 5432
示例剧本
运行单个 Orthanc 实例。
- hosts: dicom_node
roles:
- derekmerck.orthanc_docker
运行一个带有额外用户和对等体的单个 Orthanc 实例。
- hosts: dicom_node
roles:
- name: derekmerck.orthanc_docker
orthanc_users:
user1: password
user2: passw0rd!
orthanc_peers:
my_peer: [ "http://127.0.0.1:8043/", "user1", "password" ]
my_other_peer: [ "http://127.0.0.1:8043/", "user2", "passwOrd!"]
orthanc_modalities:
my_pacs: ["MY_PACS", "192.168.1.1", 104 ]
my_workstation: ["MY_WORKSTATION", "192.168.1.2", 104 ]
注意:目前仅适用于用户密码。 使用机密密码(Fernet 编码)运行带有附加用户和对等体的单个 Orthanc 实例。
- hosts: dicom_node
vars:
fernet_key: 't8YHZXpNvk_OFPkvyWc2rDWUxp7qXY6tiHr10f_PG3Y='
roles:
- name: derekmerck.orthanc_docker
orthanc_users:
user1: "gAAAAABbcFt-3M4t288flnG2xY88xKPx4U1l1phZtv4hDpnjNx3Mq8s9MnY74dY6Ab35qp6voKAVGJ9BMT8wlthPY4COk16sIg=="
user2: "gAAAAABbcFrtnhBWtrEC8QXvqByYsyEEqNKC2mP2joN4rcK58RNZIdKqMLErq-Lki6NhPSvpv_Y7fkYJRuaM4Gbt0QFFYZtZmQ=="
orthanc_peers:
my_peer: [ "http://127.0.0.1:8043/", "user1", "gAAAAABbcFt-3M4t288flnG2xY88xKPx4U1l1phZtv4hDpnjNx3Mq8s9MnY74dY6Ab35qp6voKAVGJ9BMT8wlthPY4COk16sIg==" ]
my_other_peer: [ "http://127.0.0.1:8043/", "user2", "gAAAAABbcFrtnhBWtrEC8QXvqByYsyEEqNKC2mP2joN4rcK58RNZIdKqMLErq-Lki6NhPSvpv_Y7fkYJRuaM4Gbt0QFFYZtZmQ=="]
对同一后端进行负载均衡以运行多个实例。
- hosts: dicom_node
tasks:
- include_role:
name: derekmerck.orthanc_docker
vars:
# 独立变量
orthanc_api_port: "804{{ item }}"
orthanc_dicom_port: "424{{ item }}"
# 共享变量
orthanc_data_dir: "/data/orthanc"
orthanc_docker_image: "jodogne/orthanc-plugins"
orthanc_pg_backend: True
orthanc_db_name: "orthanc"
with_sequence: count=5
运行一个带有压缩的多路转发器。
- hosts: dicom_node
roles:
- name: derekmerck.orthanc_docker
orthanc_peers:
my_peer: [ "http://127.0.0.1:8043/", "user1", "password" ]
orthanc_modalities:
my_workstation: ["MY_WORKSTATION", "192.168.1.2", 104 ]
orthanc_destinations:
- dest: my_peer
type: peer
- dest: my_workstation
type: dicom
orthanc_compression: True
许可证
MIT