in docker-compose.yml


command: --key /dur/key/iris.key


command: --key /dur/key/iris.key -b "sleep 2000" 

so the container starts but IRIS is not started
2000 is just some hang for your investigation (2000 sec)

in a 2nd session run

docker-compose exec iris bash

and start IRIS manually to see all details of what might be wrong

Sorry: my typo:   zipcode.csp  generates  csp.zipcode.CLS

<script language="cache" method="AlertUser">  
this generates the method.
But your CSP page works with HTML + js in your Browser
to the Browser that interprets and call just as JS.

BTW: old CSP pages
YES, this hasn't changed since it was fresh ~22 years ago (my 1st training docu @ISC)
and NO browser ever accepted ObjectScript as scripting language.
the <script language="cache"  ...> tag is just a compiler directive and never reaches  the browser.

Principal limit: HTML just knows about JavaScript
JavaScript is executing an XHTML call to your Ensemble carrying along all required credentials.
e.g. sessionid,  encryption, cookies, ....
In your namespace SAMPLES zipcode.cls ia a detailed example,
your call looks like this;


But the generated code is this:


HTML has no idea about all this