Move to Traefik
This commit is contained in:
parent
bf57c0d5a6
commit
471ccbadc5
36 changed files with 200 additions and 190 deletions
|
|
@ -83,6 +83,9 @@ type Config struct {
|
|||
DisAdminUser string `env:"DIS_ADMIN_USER" default:"admin" parser:"nonempty"`
|
||||
DisAdminPassword string `env:"DIS_ADMIN_PASSWORD" default:"" parser:"nonempty"`
|
||||
|
||||
// name of docker network to use
|
||||
DockerNetworkName string `env:"DOCKER_NETWORK_NAME" default:"distillery" parser:"nonempty"`
|
||||
|
||||
// ConfigPath is the path this configuration was loaded from (if any)
|
||||
ConfigPath string
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
# On top of this all real-system space will be created under this directory.
|
||||
DEPLOY_ROOT=${DEPLOY_ROOT}
|
||||
|
||||
# The name of the (global) docker network to run the distillery services in.
|
||||
DOCKER_NETWORK_NAME=${DOCKER_NETWORK_NAME}
|
||||
|
||||
# Each created Drupal Instance corresponds to a single domain name.
|
||||
# These domain names should either be a complete domain name or a sub-domain of a default domain.
|
||||
# This setting configures the default domain-name to create subdomains of.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/tkw1536/goprogram/lib/collection"
|
||||
)
|
||||
|
||||
// This file contains domain related derived configuration values.
|
||||
|
|
@ -11,6 +14,22 @@ func (cfg Config) HTTPSEnabled() bool {
|
|||
return cfg.CertbotEmail != ""
|
||||
}
|
||||
|
||||
// HostRequirement returns a traefik rule for the given names
|
||||
func (Config) HostRule(names ...string) string {
|
||||
quoted := collection.MapSlice(names, func(name string) string {
|
||||
return "`" + name + "`"
|
||||
})
|
||||
return fmt.Sprintf("Host(%s)", strings.Join(quoted, ","))
|
||||
}
|
||||
|
||||
// HTTPSEnabledEnv returns "true" if https is enabled, and "false" otherwise.
|
||||
func (cfg Config) HTTPSEnabledEnv() string {
|
||||
if cfg.HTTPSEnabled() {
|
||||
return "true"
|
||||
}
|
||||
return "false"
|
||||
}
|
||||
|
||||
// IfHttps returns value when the distillery has https enabled, and the empty string otherwise.
|
||||
func (cfg Config) IfHttps(value string) string {
|
||||
if !cfg.HTTPSEnabled() {
|
||||
|
|
@ -19,27 +38,17 @@ func (cfg Config) IfHttps(value string) string {
|
|||
return value
|
||||
}
|
||||
|
||||
// DefaultHost returns the default hostname for the distillery.
|
||||
//
|
||||
// DefaultHostRule returns the default traefik hostname rule for this distillery.
|
||||
// This consists of the [DefaultDomain] as well as [ExtraDomains].
|
||||
// Domain names are concatinated with commas.
|
||||
func (cfg Config) DefaultHost() string {
|
||||
var builder strings.Builder
|
||||
|
||||
builder.WriteString(cfg.DefaultDomain)
|
||||
for _, domain := range cfg.SelfExtraDomains {
|
||||
builder.WriteRune(',')
|
||||
builder.WriteString(domain)
|
||||
}
|
||||
|
||||
return builder.String()
|
||||
func (cfg Config) DefaultHostRule() string {
|
||||
return cfg.HostRule(append([]string{cfg.DefaultDomain}, cfg.SelfExtraDomains...)...)
|
||||
}
|
||||
|
||||
// DefaultSSLHost returns the default hostname for the ssl version of the distillery.
|
||||
//
|
||||
// This is exactly [DefaultHost] when SSL is enabled, and the empty string otherwise.
|
||||
func (cfg Config) DefaultSSLHost() string {
|
||||
return cfg.IfHttps(cfg.DefaultHost())
|
||||
func (cfg Config) xDefaultSSLHost() string {
|
||||
panic("not implemented")
|
||||
}
|
||||
|
||||
// SlugFromHost returns the slug belonging to the appropriate host.'
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ type Template struct {
|
|||
MysqlAdminPassword string `env:"MYSQL_ADMIN_PASSWORD"`
|
||||
DisAdminUsername string `env:"DIS_ADMIN_USER"`
|
||||
DisAdminPassword string `env:"DIS_ADMIN_PASSWORD"`
|
||||
DockerNetworkName string `env:"DOCKER_NETWORK_NAME"`
|
||||
}
|
||||
|
||||
// SetDefaults sets defaults on the template
|
||||
|
|
@ -85,6 +86,14 @@ func (tpl *Template) SetDefaults(env environment.Environment) (err error) {
|
|||
}
|
||||
}
|
||||
|
||||
if tpl.DockerNetworkName == "" {
|
||||
tpl.DockerNetworkName, err = password.Password(10)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tpl.DockerNetworkName = `distillery-` + tpl.DockerNetworkName
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue