侧边栏壁纸
博主头像
平凡之路博主等级

生活原本沉闷,但跑起来就会有风!

  • 累计撰写 112 篇文章
  • 累计创建 32 个标签
  • 累计收到 24 条评论

目 录CONTENT

文章目录

dcm4chee Arc5部署教程

平凡之路
2026-11-11 / 0 评论 / 0 点赞 / 2 阅读 / 1,728 字

单机部署最小归档服务集

本教程介绍如何在一台服务器上,用 Docker 快速部署一套可用的 DICOM 归档环境,包含三个核心服务:

  • OpenLDAP:归档配置
  • PostgreSQL:业务数据库
  • WildFly + Archive:DICOM / HL7 / Web 归档应用

min-archive-services

推荐优先使用 Docker Compose,步骤更简单;也可以使用 Docker 命令行逐步启动。


部署前准备

  1. 已安装 Docker(建议同时安装 Docker Compose)
  2. 确认宿主机存在时区文件;若没有,先创建:
echo "Asia/Shanghai" > /etc/timezone

没有 /etc/timezone 时,PostgreSQL / 归档容器可能无法启动。

3.(可选)创建专用系统用户,方便查看数据目录属主:

sudo -i
groupadd -r slapd-dcm4chee --gid=1021 && useradd -r -g slapd-dcm4chee --uid=1021 slapd-dcm4chee
groupadd -r postgres-dcm4chee --gid=999 && useradd -r -g postgres-dcm4chee --uid=999 postgres-dcm4chee
groupadd -r dcm4chee-arc --gid=1023 && useradd -r -g dcm4chee-arc --uid=1023 dcm4chee-arc
exit

方式一:Docker Compose(推荐)

1. 创建配置文件

在任意目录新建 docker-compose.yml:

version: "3"
services:
  ldap:
    image: dcm4che/slapd-dcm4chee:2.6.15-35.2
    logging:
      driver: json-file
      options:
        max-size: "10m"
    ports:
      - "389:389"
    environment:
      STORAGE_DIR: /storage/fs1
    volumes:
      - /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data
      - /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d

  db:
    image: dcm4che/postgres-dcm4chee:17.9-35
    logging:
      driver: json-file
      options:
        max-size: "10m"
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: pacsdb
      POSTGRES_USER: pacs
      POSTGRES_PASSWORD: pacs
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /var/local/dcm4chee-arc/db:/var/lib/postgresql/data

  arc:
    image: dcm4che/dcm4chee-arc-psql:5.35.2
    logging:
      driver: json-file
      options:
        max-size: "10m"
    ports:
      - "8080:8080"
      - "8443:8443"
      - "9990:9990"
      - "9993:9993"
      - "11112:11112"
      - "2762:2762"
      - "2575:2575"
      - "12575:12575"
    environment:
      POSTGRES_DB: pacsdb
      POSTGRES_USER: pacs
      POSTGRES_PASSWORD: pacs
      WILDFLY_CHOWN: /storage
      WILDFLY_WAIT_FOR: ldap:389 db:5432
    depends_on:
      - ldap
      - db
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone
      - /var/local/dcm4chee-arc/storage:/storage

如果启动归档时提示内存不足,可在 arc 服务中增加:

security_opt:
  - seccomp:unconfined

2. 一键启动

docker-compose -p dcm4chee up -d

3. 日常运维

# 停止
docker-compose -p dcm4chee stop

# 启动
docker-compose -p dcm4chee start

# 停止并删除容器(数据仍保留在宿主机目录)
docker-compose -p dcm4chee down

方式二:Docker 命令行

1. 创建网络

docker network create dcm4chee_network

2. 启动 OpenLDAP

docker run --network=dcm4chee_network --name ldap \
         -p 389:389 \
         -v /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data \
         -v /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d \
         -d dcm4che/slapd-dcm4chee:2.6.15-35.2

说明:

  • -p 389:389 仅用于外部 LDAP 客户端访问;归档容器通过桥接网络连接 LDAP,不依赖该映射。
  • 数据与配置已挂载到宿主机,删除/重建容器不会丢失。

如需自定义初始化参数,可追加环境变量(示例):

-e LDAP_BASE_DN=dc=ihe,dc=net \
-e LDAP_ROOTPASS=mypass \
-e ARCHIVE_DEVICE_NAME=central-archive \
-e AE_TITLE=CENTRAL \
-e DICOM_PORT=10104 \
-e HL7_PORT=12575 \
-e STORAGE_DIR=/storage/fs1

若修改了 LDAP_BASE_DN、LDAP_ROOTPASS、ARCHIVE_DEVICE_NAME,归档容器也必须设置相同值,否则无法连接 LDAP 或找不到配置。

不传以上参数时,使用默认值:dc=dcm4che,dc=org / secret / dcm4chee-arc / DCM4CHEE / 11112 / 2575 / /opt/wildfly/standalone/data/fs1。

3. 启动 PostgreSQL

docker run --network=dcm4chee_network --name db \
         -p 5432:5432 \
         -e POSTGRES_DB=pacsdb \
         -e POSTGRES_USER=pacs \
         -e POSTGRES_PASSWORD=pacs \
         -v /etc/localtime:/etc/localtime:ro \
         -v /etc/timezone:/etc/timezone:ro \
         -v /var/local/dcm4chee-arc/db:/var/lib/postgresql/data \
         -d dcm4che/postgres-dcm4chee:17.9-35

说明:

  • -p 5432:5432 仅用于外部数据库客户端;归档容器通过桥接网络连库。
  • POSTGRES_* 必须与归档容器保持一致。

4. 启动归档服务

docker run --network=dcm4chee_network --name arc \
         -p 8080:8080 \
         -p 8443:8443 \
         -p 9990:9990 \
         -p 9993:9993 \
         -p 11112:11112 \
         -p 2762:2762 \
         -p 2575:2575 \
         -p 12575:12575 \
         -e POSTGRES_DB=pacsdb \
         -e POSTGRES_USER=pacs \
         -e POSTGRES_PASSWORD=pacs \
         -e WILDFLY_WAIT_FOR="ldap:389 db:5432" \
         -v /etc/localtime:/etc/localtime:ro \
         -v /etc/timezone:/etc/timezone:ro \
         -v /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone \
         -d dcm4che/dcm4chee-arc-psql:5.35.2

WILDFLY_WAIT_FOR 会等待 LDAP 和数据库就绪后再启动,避免重启时连接失败。

自定义存储目录时

若 LDAP 中设置了 STORAGE_DIR=/storage/fs1,请额外挂载并保证可写:

sudo mkdir -p /var/local/dcm4chee-arc/storage
sudo chown 1023:1023 /var/local/dcm4chee-arc/storage

启动时补充:

-v /var/local/dcm4chee-arc/storage:/storage \
-e WILDFLY_CHOWN="/opt/wildfly/standalone /storage"

默认存储路径 /opt/wildfly/standalone/data/fs1 已包含在 wildfly 挂载中,一般无需额外处理。

HTTPS 证书

默认 HTTPS 使用内置证书:

cert

若要消除浏览器安全提示,可提供与主机名匹配、由受信任机构签发的证书(PKCS#12 或 JKS),挂载进容器后通过环境变量 KEYSTORE 指定。

5. 启停与清理

docker stop ldap db arc
docker start ldap db arc
docker rm -v ldap db arc
docker network rm dcm4chee_network

常用访问入口

将下面的 服务器IP 替换为实际主机地址即可。

Archive UI

WildFly 管理控制台

默认账号:root / changeit

DICOM Web 服务

服务 地址
QIDO-RS http://服务器IP:8080/dcm4chee-arc/aets/DCM4CHEE/rs
STOW-RS http://服务器IP:8080/dcm4chee-arc/aets/DCM4CHEE/rs
WADO-RS http://服务器IP:8080/dcm4chee-arc/aets/DCM4CHEE/rs
WADO-URI http://服务器IP:8080/dcm4chee-arc/aets/DCM4CHEE/wado

IHE XDS-I


验证是否部署成功

1. 查看归档日志

tail -f /var/local/dcm4chee-arc/wildfly/log/server.log

看到监听端口启动、应用部署成功,即表示服务已就绪。

2. 打开 Web 界面

浏览器访问 Archive UI(见上方「常用访问入口」)。

3. 发送测试影像(可选)

若按 Docker Compose 部署:

docker run --rm --network=dcm4chee_default dcm4che/dcm4che-tools storescu -c DCM4CHEE@arc:11112 /opt/dcm4che/etc/testdata/dicom

若按 Docker 命令行部署:

docker run --rm --network=dcm4chee_network dcm4che/dcm4che-tools storescu -c DCM4CHEE@arc:11112 /opt/dcm4che/etc/testdata/dicom

若网络名不一致,先执行 docker network ls 查看实际网络名称。

发送成功后,可在 Web 界面中查看到测试影像:

received_ct_images


常用端口

端口 用途
8080 / 8443 Web 访问
9990 / 9993 管理控制台
11112 DICOM
2762 DICOM TLS
2575 HL7
12575 HL7 TLS
389 LDAP(可选映射,供外部客户端)
5432 PostgreSQL(可选映射,供外部客户端)

使用提示

  1. 数据库账号密码要与归档服务保持一致,否则无法连库。
  2. LDAP 中修改了关键参数后,归档服务也要同步配置。
  3. 数据目录挂载到宿主机后,删除容器不会丢失配置与影像数据。
  4. 生产环境请修改数据库与 WildFly 默认密码,并按实际需求配置 HTTPS 证书(KEYSTORE)。
0

评论区