you are mixing things.
#1) working:
1.1 yo talk to login + authentication
1.2 you talk to command prompt that stores your code locally. 
#2) not working
 authentication from script is not supported, the rest goes nowhere
#3) not working examples
both assume that
3.1 you enter the code in Studio, VSCode, ...and COMPILE  it.
3.2 you call the compiled code from the command line

Hi @Scott Roth !
from my ~260+ reviews, I can confirm to you that Docker provides just the vanilla platform for 
demonstration and prepares genal settings (eg.REST)  and shuffles demo data.
But in 98% of those cases, the effective code is installed by ZPM.  
And if ZPM is not installed there is one of those famous 1-liners to install it  (with enough privileges).

To me, docker-compose is just a comfortable way to mix up ports, and volumes, to integrate the container with the environment outside the container.
I'm rather sure our well known Docker Experts have a related cookbook ready for publishing
(there was just no contest to win a prize for it and make money)

The real info on what to copy where is mostly in Dockerfile., which is called by docker-compose.

Hi @Marcel den Ouden 

I did something similar a few years back for an ISC internal project.
I required 2 tables to achieve this
- mapping of the location to timezone code  (geographic coordinates are often misleading, STATIC)
- rules and offset from UTC (daylight Saving Y/N, the window when to apply,...) might be flexible
- $ZTZ is your friend and the Docs are really excellent also for special cases

A further complication is mobile use.
example:
- You go to Summit in Seattle. (UTC-7)
- you need to arrange a concall with a customer in Amsterdam (UTC+2) (CEST!)
- and meeting in Nov. (UTC+1)  back to normal time
- And you need to know the time zone used by your notebook (local or home or other?)

For the notebook, I used some JavaScript as the app was written in ZEN (10 yrs.back)
and it was mine and I could control it.
see more in my Article Global Time Management


 

From your description, it is obvious that you write ALL global streams just to default ^CacheStream.

To separate them you may set individual Globals for streaming (e.g depending on use-case)

Class %Library.GlobalBinaryStream has this parameter + property:

/// Default location: can be overridden at run-time
Parameter STOREGLOBALNAME = "^CacheStream"; /// Root is Global Location (name and top subscripts)

Property StoreRoot As %String(MAXLEN = 5000) [ InitialExpression = {..#STOREGLOBALNAME}, Private ]; Property rollback As %String [ MultiDimensional, Private ];


You can change this default using the method
Method %LocationSet(value As %String) As %Status
{
 Do ..Clear()
 Set ..StoreRoot=value,i%%Location=value
 Quit $$$OK
}