IRIS image下载
在https://containers.intersystems.com网站上获得可以下载的InterSystems的各种docker镜像。如果只是安装Community版本, 不需要注册。如果是下载安装正式的版本,需要在网站注册,然后获得Login Token登陆。
#;这一部有可能需要科学上网,否则无法正常登陆
hma@CNMBP23HMA ~ % docker login -u="hma" -p="k8zIqpoafIUaViP2BA4gCZdcC4EeKyb0svSjnyVtcWMb" containers.intersystems.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
# pull iris image,webgateway,Passhash, arbiter, etc.
hma@CNMBP23HMA ~ % docker pull containers.intersystems.com/intersystems/healthconnect-arm64:latest-cd
hma@CNMBP23HMA ~ % docker pull containers.intersystems.com/intersystems/webgateway-arm64:latest-cd
...
Tips
-
下载社区(Community)版本的镜像不用在网站注册,使用时也不需要安装license。社区版内置内置了一个13个月的license。而正式版本IRIS Continer安装需要从InterSystems处获得IRIS docker版的专用license。
-
标记
latest-cd(Continuous delivery)
,latest-em(Extended maintenance)
,latest-preview
是最新的"持续交付"版本, "扩展维护"版本,以及"开发预览版"。 您也可以选择指定专门的版本,比如当前最新的GA版本2024.2。同时,如果硬件是ARM芯片,请选择带有“-arm64"后缀的版本。 -
WebGateway-nginx是nginx服务器的版本,而WebGateway镜像内置了apache2服务。
简单的搭建测试环境
我要使用的iris 2024的版本,其中再没有之前的内置的PWS(Private Web Server), 也就是说您当前以及无法从http://localhost:52773/csp/sys/UtilHome.csp登录管理门户了。因此我用docker-compose
来创建下面的例子。docker-compose
用来编排多个container共同工作。它自动的创建一个单独的docker network, 其中的所有service, 也就是docker container可以通过container name通信。
如果是简单的测试环境, 可以直接用docker run
运行IRIS Container。 我们先来run一个最简单的社区版:
compose.yaml
services:
iris-a:
image: containers.intersystems.com/intersystems/irishealth-community-arm64:2024.2
container_name: iris-a
hostname: irisa
ports:
- 1980:1972
- 52773:52773
environment:
- TZ=CST-8
webgateway-apache:
image: containers.intersystems.com/intersystems/webgateway-arm64:2024.1
container_name: wg-apache
hostname: wg-apache
ports:
- "8080:80"
environment:
- TZ=CST-8
说明两点: 1. 在IRIS2024中52773端口已经无法使用,所以不需要再被映射到主机。 2. TZ=CST-8是把container的时区设置为上海。
运行后可以看到两个container都已经工作
hma@CNMBP23HMA demo % docker-compose up -d
[+] Running 3/3
✔ Network demo_default Created 0.0s
✔ Container wg-apache Started 0.0s
✔ Container iris-a Started 0.0s
hma@CNMBP23HMA demo % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cfa4cc730c14 containers.intersystems.com/intersystems/irishealth-community-arm64:2024.2 "/tini -- /iris-main" 6 seconds ago Up 5 seconds 2188/tcp, 52773/tcp, 53773/tcp, 54773/tcp, 0.0.0.0:1980->1972/tcp iris-a
63e983d90034 containers.intersystems.com/intersystems/webgateway-arm64:2024.1 "/startWebGateway" 6 seconds ago Up 5 seconds 0.0.0.0:8080->80/tcp, 0.0.0.0:4433->443/tcp wg-apache
hma@CNMBP23HMA demo %
查看iris container
这时,虽然还无法登录iris的管理门户,您可以使用docker exec进入iris container查看iris实例已运行。 注意两点:
- 默认登录的用户是irisowner
- IRIS的安装路径是
/usr/irissys
.
hma@CNMBP23HMA installer_cch % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
59e2424757db containers.intersystems.com/intersystems/irishealth-arm64:2024.1 "/tini -- /iris-main" 6 seconds ago Up 5 seconds 0.0.0.0:1972->1972/tcp, 2188/tcp, 53773/tcp, 0.0.0.0:52773->52773/tcp, 54773/tcp iris
hma@CNMBP23HMA installer_cch % docker exec -it iris bash
irisowner@59e2424757db:~$ iris list
Configuration 'IRIS' (default)
directory: /usr/irissys
versionid: 2024.1.0.263.0
datadir: /usr/irissys
conf file: iris.cpf
status: running, since Wed Oct 23 12:32:45 2024
SuperServers: 1972
state: warn
product: InterSystems IRISHealth
irisowner@59e2424757db:~$ iris session iris
Node: 59e2424757db, Instance: IRIS
USER>halt
irisowner@59e2424757db:~$
查看Webgateway Container
- 从浏览器打开 http://localhost:8080, 可以看到apache2的主页面。
- 访问http://localhost:8080/csp/bin/Systems/Module.cxw?CSPSYS=0&CSPSYSreferer=...,可以进入Webgateway的配置页面。 这里一定注意:访问http://localhost:8080/csp/bin/Systems/Module.cxw会得到500错误。当前状态下一定要带着参数访问这个网址。
- 配置webgateway到iris的连接:在当前页面,你需要设置。
- Server Local的IP/DNS和Port:这里是iris container的名字iris-a,和iris-a container的superserver端口1972
- 登录iris的账户密码:CSPSystem, SYS
保存设置,然后在"Test Server Connection"页面测试连接,你将看到连接成功的结果。
-
尽量webgateway已经成功连接了IRIS, 但配置还没有完。要成功访问IRIS管理页面,你需要修改一个apache2的配置文件CSP.conf
- 使用
docker exec -it wg-apache bash
进入container. - 修改
/etc/apache2/mods-available/CSP.conf
配置文件,如下:
# 原始文件的内容 CSPModulePath "${ISC_PACKAGE_INSTALLDIR}/bin/" CSPConfigPath "${ISC_PACKAGE_INSTALLDIR}/bin/" <Location "/csp/bin/Systems/"> SetHandler csp-handler-sa </Location> <Location "/csp/bin/RunTime/"> SetHandler csp-handler-sa </Location> <Directory "${ISC_PACKAGE_INSTALLDIR}/bin/"> AllowOverride None Options None Require all granted <FilesMatch "\.(log|ini|pid|exe)$"> Require all denied </FilesMatch> </Directory> # 自己添加的内容 <Location "/csp"> CSP On </Location> <Location "/api"> CSP On </Location> <Location "/isc"> CSP On </Location>
- 用命令行
service apache2 restart
重启apache2, 或者从container里退出重启wg-apache container. - 从浏览器访问http://localhost:8080/csp/sys/UtilHome.csp, 您应该已经可以成功访问IRIS了。
- 使用
总结
虽然题目是'简单的搭建测试环境', 但实际上还是有非常多的步骤,主要是集中在webgateway到IRIS的连接上。 如果您熟悉docker-compose,您知道这样人工的配置一个container是不合适的。而后面的章节我会专门有一章节如何在docker-compose里自动配置webgateway。之所以还要介绍webgateway的人工配置步骤,是因为这些知识是自动配置webgateway的背景知识,而且在做debug时非常关键。
另外,后面我还会介绍webgateay-nginx的配置。