Unfortunately, I don't have yet, any good solution for now, as store your sources in XML format. You can export them with /exportversion=cache2018.1  flag, with your Studio SourceControl class. IRIS will upgrade source code for Caché and downgrade when you export them with the flag.

Btw, you can have sources in XML and use the modern VSCode-ObjectScript editor.

It's just a default empty instance. You then have to create a new namespace with the database. Interoperability will be enabled by default in that new Namespace, and it will appear there. But, you should have in mind, that all those changes may disappear by default, when you delete your container and start it again, it will be the same as in the first start. You can configure durable %SYS, to get it stored outside of the container or volumes.

You can deploy IRIS with Kubernetes which is inside of OpenShift. It is not so easy to explain here. As it will be just a common task, rather than something narrow just for you. Deploying a database to the cluster is a very specific task, and very depends on your needs.

As well as Kubernetes, I think you may also use ICM, did not use it before, so, not sure if it will work with OpenShift as well.

Sharding will allow you to split your data between physically different servers with each own storage. So, you may get faster simultaneous read/write of data. At the same time with ECP configuration, your application servers will get direct access to the sharding node which holds data. 

So, if it is correctly configured you should get some profit from it, for sure.

Studio Uses Super port to connect to DB. And keep connected all the time, when it loses connection it offers to even restart Studio not just reconnect. It can also hang when you doing a big compile.

I would recommend finding a way to migrate to the latest version. And so, you will be able to use VSCode-ObjectScript, which does not care about connection status, you can restart the server, you can do debug and big compile.

If you provisioned IRIS on Google Cloud from marketplace, you should be able to see the same page as on my screenshot. You can press the button Visit the site, which will go you to System Management Portal, where you should be able to login with the default _SYSTEM and SYS, after that it will request you to change the default password. Which you can use in VSCode or Atelier. 

Using VSCode-ObjectScript is very easy to connect to a cloud instance with IRIS.

 Just Use IP address and port from site address, login _SYSTEM and password changed after first connect. 

And write it to file, .vscode/settings.json in your project folder

{
    "objectscript.conn": {
        "active": true,
        "host": "xx.xx.xx.xx",
        "port": 52773,
        "username": "_SYSTEM",
        "password": "123",
        "ns": "USER",
    }    
}

Unfortunately, InterSystems officially does not offer how to deal with docker at all. Where articles from, let's say from you or somebody else, with the ways how to do it the Right way. 

Comments to the repository https://github.com/intersystems/container-tools:

  • 2019.4 already exists and published, but examples still only for 2019.3
  • ZSTART.XML in XML format. Why so, when it should be MAC file
    • quite arguing the decision, to load code in this place
    • endless loop with goto in the code
  • Dockerfile, with a line longer than screen size. 
    • where QuiesceForBundling?

InterSystems say how to run InterSystems products with docker, while nothing about running customer's applications on IRIS with Docker.

What's happens here is, it is how the community works. I have a problem, I don't want to write to much in my Dockerfile. I wrote a lot of them, for many different projects. I need some universal way, for me. I did it, and I update my own template from time to time.

Are you sure that you really need it?

Yes, you have free space in your database but it will be used when the amount of data stored in this database will grow, so, your free space will become less. I have an article with some visualization, how free-space looks like in a kind of real-life. How Compaction works, it good to read it just to know what expect from those actions. 

In short Compact, just should move all free blocks to the end of the database. It does not return this space to system, you then should do Truncate.

I don't know the way how to measure how much time it will take, it depends on many factors. But you can try run FileCompact method, with quite a small TargetFree, get ActualFree, and with the next time increase TargetFree until you reach desired.