@@ -21,24 +21,31 @@ var (
21
21
)
22
22
23
23
const bashTemplate = `#!/bin/bash
24
- /usr/bin/docker {{.DockerHostConnCmdArg}} pull {{.Image}}
24
+ /usr/bin/docker {{.DockerHostConnCmdArg}} pull {{.Service. Image}}
25
25
26
- if /usr/bin/docker {{.DockerHostConnCmdArg}} ps | grep --quiet {{.Name}}_1 ; then
27
- /usr/bin/docker {{.DockerHostConnCmdArg}} rm -f {{.Name}}_1
26
+ if /usr/bin/docker {{.DockerHostConnCmdArg}} ps | grep --quiet {{.Service. Name}}_1 ; then
27
+ /usr/bin/docker {{.DockerHostConnCmdArg}} rm -f {{.Service .Name}}_1
28
28
fi
29
29
30
30
/usr/bin/docker {{.DockerHostConnCmdArg}} run \
31
- {{if .Privileged}}--privileged=true {{end}} \
32
- --restart=always \
33
- -d \
34
- --name {{.Name}}_1 \
35
- {{range .Volumes}}-v {{.}} {{end}} \
36
- {{range .Links}}--link {{.}} {{end}} \
37
- {{range $key, $value := .Environment}}-e {{$key}}="{{$value}}" {{end}} \
38
- {{range .Ports}}-p {{.}} {{end}} \
39
- {{.Image}} {{.Command}}
31
+ {{if .Service .Privileged}}--privileged=true {{end}} \
32
+ --restart=always \
33
+ -d \
34
+ --name {{.Service .Name}}_1 \
35
+ {{range .Service .Volumes}}-v {{.}} {{end}} \
36
+ {{range .Service .Links}}--link {{.}} {{end}} \
37
+ {{range $key, $value := .Service .Environment}}-e {{$key}}="{{$value}}" {{end}} \
38
+ {{range .Service .Ports}}-p {{.}} {{end}} \
39
+ {{.Service. Image}} {{.Service .Command}}
40
40
`
41
41
42
+ // ScriptDataTemplate contains the whole data configuration used to fill the script
43
+ type ScriptDataTemplate struct {
44
+ AppName string
45
+ DockerHostConnCmdArg string
46
+ Service Service
47
+ }
48
+
42
49
// Service has the same structure used by docker-compose.yml
43
50
type Service struct {
44
51
Name string
@@ -49,8 +56,6 @@ type Service struct {
49
56
Privileged bool
50
57
Command string
51
58
Environment map [string ]string
52
- // helper variables
53
- DockerHostConnCmdArg string
54
59
}
55
60
56
61
// Parses the original Yaml to the Service struct
@@ -75,6 +80,21 @@ func setLinksWithAppName(service *Service) {
75
80
}
76
81
}
77
82
83
+ func buildScriptDataTemplate (serviceName string , service Service ) ScriptDataTemplate {
84
+ // common data template for all services from the same app
85
+ data := ScriptDataTemplate {AppName : appName }
86
+ if dockerHostConn != "" {
87
+ data .DockerHostConnCmdArg = "--host=" + dockerHostConn
88
+ }
89
+
90
+ // specific data for each service
91
+ service .Name = appName + "-" + serviceName
92
+ setLinksWithAppName (& service )
93
+ data .Service = service
94
+
95
+ return data
96
+ }
97
+
78
98
// Saves the services data into bash scripts
79
99
func saveToBash (services map [string ]Service ) (err error ) {
80
100
t := template .New ("service-bash-template" )
@@ -84,15 +104,11 @@ func saveToBash(services map[string]Service) (err error) {
84
104
}
85
105
86
106
for name , service := range services {
87
- service .Name = appName + "-" + name
88
- if dockerHostConn != "" {
89
- service .DockerHostConnCmdArg = "--host=" + dockerHostConn
90
- }
107
+ data := buildScriptDataTemplate (name , service )
91
108
92
- f , _ := os .Create (path .Join (outputPath , service .Name + ".1.sh" ))
109
+ f , _ := os .Create (path .Join (outputPath , data . Service .Name + ".1.sh" ))
93
110
defer f .Close ()
94
-
95
- t .Execute (f , service )
111
+ t .Execute (f , data )
96
112
}
97
113
98
114
return nil
0 commit comments