@@ -20,15 +20,25 @@ const (
20
20
PGDATADIR = "/var/lib/postgresql/data/"
21
21
)
22
22
23
- func NewPostgresContainer (image , name , postgresUsername , postgresPassword string , port int ) (postgresContainer dockerservice.Container , err error ) {
23
+ type ContainerProps struct {
24
+ Image string
25
+ Name string
26
+ Username string
27
+ Password string
28
+ Port int
29
+ Memory int64
30
+ CPUShares int64
31
+ }
32
+
33
+ func NewPostgresContainer (props ContainerProps ) (postgresContainer dockerservice.Container , err error ) {
24
34
dockerClient , err := dockerservice .NewDocker ()
25
35
if err != nil {
26
36
fmt .Printf ("error creating client %v" , err )
27
37
}
28
38
newVolume , err := dockerservice .CreateVolume (context .Background (), dockerClient , volume.VolumeCreateBody {
29
39
Driver : "local" ,
30
40
Labels : map [string ]string {"purpose" : "postgres data" },
31
- Name : name ,
41
+ Name : props . Name ,
32
42
})
33
43
if err != nil {
34
44
return dockerservice.Container {}, err
@@ -41,7 +51,7 @@ func NewPostgresContainer(image, name, postgresUsername, postgresPassword string
41
51
}
42
52
}
43
53
}()
44
- networkResponse , err := dockerservice .CreateNetwork (context .Background (), dockerClient , name + "_default" , types.NetworkCreate {CheckDuplicate : true })
54
+ networkResponse , err := dockerservice .CreateNetwork (context .Background (), dockerClient , props . Name + "_default" , types.NetworkCreate {CheckDuplicate : true })
45
55
if err != nil {
46
56
return dockerservice.Container {}, err
47
57
}
@@ -53,9 +63,8 @@ func NewPostgresContainer(image, name, postgresUsername, postgresPassword string
53
63
}
54
64
}
55
65
}()
56
- containerName := PREFIXPGCONTAINER + name
57
-
58
- newHostPort , err := nat .NewPort ("tcp" , strconv .Itoa (port ))
66
+ containerName := PREFIXPGCONTAINER + props .Name
67
+ newHostPort , err := nat .NewPort ("tcp" , strconv .Itoa (props .Port ))
59
68
if err != nil {
60
69
return dockerservice.Container {}, err
61
70
}
@@ -82,21 +91,25 @@ func NewPostgresContainer(image, name, postgresUsername, postgresPassword string
82
91
NetworkMode : "default" ,
83
92
AutoRemove : false ,
84
93
Mounts : mounts ,
94
+ Resources : container.Resources {
95
+ CPUShares : props .CPUShares ,
96
+ Memory : props .Memory * 1000000 ,
97
+ },
85
98
}
86
99
87
100
endpointConfig := map [string ]* network.EndpointSettings {}
88
- networkName := name + "_default"
101
+ networkName := props . Name + "_default"
89
102
// setting key and value for the map. networkName=$dbname_default (eg: viggy_default)
90
103
endpointConfig [networkName ] = & network.EndpointSettings {}
91
104
nwConfig := network.NetworkingConfig {EndpointsConfig : endpointConfig }
92
105
env := []string {}
93
- env = append (env , misc .StringToDockerEnvVal ("POSTGRES_USER" , postgresUsername ))
94
- env = append (env , misc .StringToDockerEnvVal ("POSTGRES_PASSWORD" , postgresPassword ))
106
+ env = append (env , misc .StringToDockerEnvVal ("POSTGRES_USER" , props . Username ))
107
+ env = append (env , misc .StringToDockerEnvVal ("POSTGRES_PASSWORD" , props . Password ))
95
108
96
109
postgresContainer = dockerservice .NewContainer (
97
110
containerName ,
98
111
container.Config {
99
- Image : image ,
112
+ Image : props . Image ,
100
113
Env : env ,
101
114
},
102
115
hostConfig ,
0 commit comments