Clarity on config files

Hi all,

Ref this doc (Temporal Server self-hosted production deployment | Temporal Documentation), is the foo.yml the same as development.yml referenced here (Temporal Cluster configuration reference | Temporal Documentation)?

i.e. when running a basic docker version, should I just be able to set the DYNAMIC_CONFIG_FILE_PATH var to my config file, and that contains ALL the configuration?

It looks like that is not the case, and it’s picking up “docker.yaml” instead and trying to load my custom config as a superset of this? The docs are really unclear on how you’re supposed to get this all configured.

Is the “dynamic config” just the config, or is it something else?

Thanks for any tips!

Temporal server has two configs, static and dynamic config. Static config is read just once and used as config for service node container/pod startup (or in case of auto-setup image used for all 4 service roles that run within the same process in this case). Dynamic config on the other hand can be checked for updates (min 5s interval). This interval is configured in static config via dynamicConfigClient prop.
You can think of static config as the “main” server config, where as dynamic config is a config that contains values such as service role rps limits etc that can be updated while the cluster is up.

To make static config for server easier to work with as well as be able to use env vars for example in docker compose to set certain values, the server image has a default config template here.
This template as you correctly mentioned does get parsed into “/etc/temporal/config/docker.yaml” as you can see in the server image entry point here.
You do not have to use this default template if you don’t wish to and you can define your own, see example here and associated volume mapping in docker compose here.

Dynamic config file path and poll interval can be configured in static config via dynamicConfigClient. It would contain values that can be updated during the life time of your cluster so you can fine-tune it when needed without having to restart it. If not defined it would be looked up at /etc/temporal/config/dynamicconfig/docker.yaml. To set a custom dynamic config you would need a volume mapping to a dir that could contain multiple dynamic configs as shown here and then you would pick which one to specifically apply via DYNAMIC_CONFIG_FILE_PATH env var set in your static config.

Hope this helps, let me know if there are any other questions.

That helps! Thank you!