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:
parent
db1989a299
commit
e969351f8e
13 changed files with 40 additions and 28 deletions
|
|
@ -135,10 +135,11 @@ func (si systemupdate) Run(context wisski_distillery.Context) (err error) {
|
|||
}
|
||||
}
|
||||
|
||||
// create the docker network
|
||||
// create the docker networks
|
||||
{
|
||||
logging.LogMessage(context.Stderr, context.Context, "Configuring docker networks")
|
||||
name := dis.Config.Docker.Network
|
||||
|
||||
for _, name := range dis.Config.Docker.Networks() {
|
||||
id, existed, err := dis.Docker().CreateNetwork(context.Context, name)
|
||||
if err != nil {
|
||||
return errNetworkCreateFailed.Wrap(err)
|
||||
|
|
@ -149,6 +150,7 @@ func (si systemupdate) Run(context wisski_distillery.Context) (err error) {
|
|||
context.Printf("Network %s (id %s) created\n", name, id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// install and update the various stacks!
|
||||
ctx := component.InstallationContext{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ type Template struct {
|
|||
SQLAdminUsername string
|
||||
SQLAdminPassword string
|
||||
|
||||
DockerNetworkName string
|
||||
DockerNetworkPrefix string
|
||||
SessionSecret string
|
||||
}
|
||||
|
||||
|
|
@ -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{
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ func (binder *Binder) Stack() component.StackWithResources {
|
|||
},
|
||||
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": binder.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": binder.Config.Docker.Network(),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ func (server *Server) Stack() component.StackWithResources {
|
|||
EnvPath: "server.env",
|
||||
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": server.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": server.Config.Docker.Network(),
|
||||
"HOST_RULE": server.Config.HTTP.DefaultHostRule(),
|
||||
"HTTPS_ENABLED": server.Config.HTTP.HTTPSEnabledEnv(),
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ func (solr *Solr) Stack() component.StackWithResources {
|
|||
|
||||
EnvPath: "solr.env",
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": solr.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": solr.Config.Docker.Network(),
|
||||
},
|
||||
|
||||
MakeDirs: []string{
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ func (sql *SQL) Stack() component.StackWithResources {
|
|||
|
||||
EnvPath: "sql.env",
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": sql.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": sql.Config.Docker.Network(),
|
||||
"HTTPS_ENABLED": sql.Config.HTTP.HTTPSEnabledEnv(),
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ func (ssh *SSH2) Stack() component.StackWithResources {
|
|||
EnvPath: "ssh2.env",
|
||||
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": ssh.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": ssh.Config.Docker.Network(),
|
||||
"HOST_RULE": ssh.Config.HTTP.DefaultHostRule(),
|
||||
|
||||
"CONFIG_PATH": ssh.Config.ConfigPath,
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ func (ts *Triplestore) Stack() component.StackWithResources {
|
|||
|
||||
EnvPath: "triplestore.env",
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": ts.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": ts.Config.Docker.Network(),
|
||||
},
|
||||
|
||||
MakeDirs: []string{
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ func (web *Web) Stack() component.StackWithResources {
|
|||
stack.EnvPath = "web.env"
|
||||
|
||||
stack.EnvContext = map[string]string{
|
||||
"DOCKER_NETWORK_NAME": web.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": web.Config.Docker.Network(),
|
||||
"CERT_EMAIL": web.Config.HTTP.CertbotEmail,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ func (barrel *Barrel) Stack() component.StackWithResources {
|
|||
EnvPath: filepath.Join("barrel.env"),
|
||||
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": barrel.Malt.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": barrel.Malt.Config.Docker.Network(),
|
||||
|
||||
"SLUG": barrel.Slug,
|
||||
"VIRTUAL_HOST": barrel.Domain(),
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ func (reserve *Reserve) Stack() component.StackWithResources {
|
|||
EnvPath: filepath.Join("reserve.env"),
|
||||
|
||||
EnvContext: map[string]string{
|
||||
"DOCKER_NETWORK_NAME": reserve.Malt.Config.Docker.Network,
|
||||
"DOCKER_NETWORK_NAME": reserve.Malt.Config.Docker.Network(),
|
||||
|
||||
"SLUG": reserve.Slug,
|
||||
"VIRTUAL_HOST": reserve.Domain(),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue