config/network: Prepare for multiple networks

This commit futures proofs the code to allow for usage of more than one
docker network.
This commit is contained in:
Tom Wiesing 2023-03-13 10:10:37 +01:00
parent db1989a299
commit e969351f8e
No known key found for this signature in database
13 changed files with 40 additions and 28 deletions

View file

@ -45,7 +45,8 @@ theme:
home: null
docker:
# The name of the (global) docker network to run the distillery services in.
# The distillery uses several global docker networks.
# This determines the prefix to use for those networks.
network: null
# Configuration of the sql backend

View file

@ -1,6 +1,15 @@
package config
type DockerConfig struct {
// name of docker network to use
Network string `yaml:"network" default:"distillery" validate:"nonempty"`
NetworkPrefix string `yaml:"network" default:"distillery" validate:"nonempty"`
}
// Networks returns a list of all docker networks to be created for purposes of the distillery.
func (dc DockerConfig) Networks() []string {
return []string{dc.Network()}
}
// Network returns the name of the default network to attach all docker containers to.
func (dc DockerConfig) Network() string {
return dc.NetworkPrefix
}

View file

@ -22,8 +22,8 @@ type Template struct {
SQLAdminUsername string
SQLAdminPassword string
DockerNetworkName string
SessionSecret string
DockerNetworkPrefix string
SessionSecret string
}
// SetDefaults sets defaults on the template
@ -58,12 +58,12 @@ func (tpl *Template) SetDefaults() (err error) {
}
}
if tpl.DockerNetworkName == "" {
tpl.DockerNetworkName, err = password.Generate(rand.Reader, 10, passwordx.Identifier)
if tpl.DockerNetworkPrefix == "" {
tpl.DockerNetworkPrefix, err = password.Generate(rand.Reader, 10, passwordx.Identifier)
if err != nil {
return err
}
tpl.DockerNetworkName = `distillery-` + tpl.DockerNetworkName
tpl.DockerNetworkPrefix = `distillery-` + tpl.DockerNetworkPrefix
}
if tpl.SessionSecret == "" {
@ -93,7 +93,7 @@ func (tpl Template) Generate() Config {
ExtraDomains: []string{},
},
Docker: DockerConfig{
tpl.DockerNetworkName,
NetworkPrefix: tpl.DockerNetworkPrefix,
},
SQL: SQLConfig{
DatabaseConfig: DatabaseConfig{