there are some possible issues to have docker related files in a dedicated folder. 

When you would like to start an environment with docker-compose, you can do it with a command like this.

docker-compose up -d

but it will work only if the docker-compose.yml file name has not changed and it lays right in the current folder.

if you change its location or name, you will have to specify the new place

docker-compose -f ./docker/docker-compose.yml up -d

became not so simple, right?

Ok, next about Dockerfile.

when you build docker image, you have to specify context. So, the command below, just uses file Dockerfile in the current folder, and uses current folder as a context for build.

docker build .

To build docker image with Dockerfile placed somewhere else, you should specify it, suppose you still would like to have current folder as context.

docker build -f ./docker/Dockerfile .

any other files in the root, such as Installer.cls, irissession.sh or any other files which should be used during docker build have to be available from specified context folder. And you can't specify more than one context. So, any of those files should have some parent folder at least, and why not the root of a project.

with docker-compose.yml, we forget about docker build command, but we still have to care about docker-compose

It's great that you trying to do it.

But I'm not sure what you actually going to achieve with WebGateway?

A provided link has info about running in docker.

So, if you just want to activate server-status page in internal apache which goes with IRIS, you should know, that it is not recommended to use internal webserver in production.

Some time ago I did an example of Apache with CSPgateway as a docker image. It can be outdated a bit but can be used as an example, how to achieve it. You can easily extend Apache settings there, to allow server-status as well.

$lb is a binary format, when you try to write it you just outputs everything including special symbols.

zwrite command, can do it respectively to format.

zzdump can show how it looks in real, it's byte sequence.

USER>zw $lb("words","more","words")
$lb("words","more","words") 

USER>zzdump $lb("words","more","words") 

0000: 07 01 77 6F 72 64 73 06 01 6D 6F 72 65 07 01 77         ..words..more..w
0010: 6F 72 64 73                                             ords

USER>zzdump $lb(1,2,3,4,5)              
0000: 03 04 01 03 04 02 03 04 03 03 04 04 03 04 05            ...............

But it is not so important how it looks low-level, as we mostly don't care about it.  Developers work with $ListBuild mostly through a bunch of functions, such as $list, $listget, $listnext and so on. You can find more information about $listbuild in the documentation, as well as many examples, and all functions which can be used to work with it.

Hi Jose,

Interesting, I don't have windows, but as I can see, exit code 2, means 

The system cannot find the file specified.

That's strange when it successfully called docker-compose when looked for a port.

You can also try to open an ordinary terminal in VSCode (Menu, View->Terminal), and put full command there, to see how it works.

Thanks, for sharing this.

As an addition, if you have would like to use a different file name from default docker-compose.yml for your configuration, you can set it as well.

"objectscript.conn" :{
  "ns": "IRISAPP",
  "active": true,
  "docker-compose": {
    "service": "iris",
    "internalPort": 52773,
    "file": "docker-compose.yml"
  }
}