feat: attach vector container to additional docker networks
Adds a new global `vector-networks` property on the logs plugin that takes a comma-separated list of Docker networks. When set, the rendered compose file declares each network plus `bridge` as external and joins them on the vector service, so `docker compose up` reconciles attachments on every `logs:vector-start`. When unset, the existing `network_mode: bridge` template is preserved unchanged. The value is validated against `docker network inspect` at set time, rejects the reserved `bridge` entry, and is surfaced in `dokku logs:report` via `--logs-vector-global-networks`.
This commit is contained in:
@@ -24,9 +24,10 @@ type vectorSource struct {
|
||||
}
|
||||
|
||||
type vectorTemplateData struct {
|
||||
DokkuLibRoot string
|
||||
DokkuLogsDir string
|
||||
VectorImage string
|
||||
DokkuLibRoot string
|
||||
DokkuLogsDir string
|
||||
VectorImage string
|
||||
VectorNetworks []string
|
||||
}
|
||||
|
||||
const vectorContainerName = "vector-vector-1"
|
||||
@@ -89,9 +90,10 @@ func startVectorContainer(vectorImage string) error {
|
||||
}
|
||||
|
||||
data := vectorTemplateData{
|
||||
DokkuLibRoot: dokkuLibRoot,
|
||||
DokkuLogsDir: dokkuLogsDir,
|
||||
VectorImage: vectorImage,
|
||||
DokkuLibRoot: dokkuLibRoot,
|
||||
DokkuLogsDir: dokkuLogsDir,
|
||||
VectorImage: vectorImage,
|
||||
VectorNetworks: getVectorNetworks(),
|
||||
}
|
||||
|
||||
if err := tmpl.Execute(tmpFile, data); err != nil {
|
||||
@@ -104,6 +106,24 @@ func startVectorContainer(vectorImage string) error {
|
||||
})
|
||||
}
|
||||
|
||||
func getVectorNetworks() []string {
|
||||
value := common.PropertyGet("logs", "--global", "vector-networks")
|
||||
if value == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
networks := []string{}
|
||||
for _, name := range strings.Split(value, ",") {
|
||||
name = strings.TrimSpace(name)
|
||||
if name == "" {
|
||||
continue
|
||||
}
|
||||
networks = append(networks, name)
|
||||
}
|
||||
|
||||
return networks
|
||||
}
|
||||
|
||||
func getComputedVectorImage() string {
|
||||
return common.PropertyGetDefault("logs", "--global", "vector-image", getDefaultVectorImage())
|
||||
}
|
||||
@@ -151,9 +171,10 @@ func stopVectorContainer() error {
|
||||
}
|
||||
|
||||
data := vectorTemplateData{
|
||||
DokkuLibRoot: dokkuLibRoot,
|
||||
DokkuLogsDir: dokkuLogsDir,
|
||||
VectorImage: getComputedVectorImage(),
|
||||
DokkuLibRoot: dokkuLibRoot,
|
||||
DokkuLogsDir: dokkuLogsDir,
|
||||
VectorImage: getComputedVectorImage(),
|
||||
VectorNetworks: getVectorNetworks(),
|
||||
}
|
||||
|
||||
if err := tmpl.Execute(tmpFile, data); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user