@@ -18,8 +18,9 @@ type Docker struct {
18
18
Container struct {
19
19
Inspect DockerContainerInspect
20
20
Logs DockerContainerLogs
21
- Run DockerContainerRun
22
21
Remove DockerContainerRemove
22
+ Restart DockerContainerRestart
23
+ Run DockerContainerRun
23
24
Stop DockerContainerStop
24
25
}
25
26
@@ -45,6 +46,7 @@ func NewDocker() Docker {
45
46
}
46
47
47
48
docker .Container .Remove = DockerContainerRemove {executable : executable }
49
+ docker .Container .Restart = DockerContainerRestart {executable : executable }
48
50
docker .Container .Stop = DockerContainerStop {executable : executable }
49
51
50
52
docker .Volume .Remove = DockerVolumeRemove {executable : executable }
@@ -60,6 +62,7 @@ func (d Docker) WithExecutable(executable Executable) Docker {
60
62
61
63
d .Container .Inspect .executable = executable
62
64
d .Container .Logs .executable = executable
65
+ d .Container .Restart .executable = executable
63
66
d .Container .Remove .executable = executable
64
67
d .Container .Run .executable = executable
65
68
d .Container .Run .inspect = d .Container .Inspect
@@ -277,6 +280,23 @@ func (r DockerContainerRun) Execute(imageID string) (Container, error) {
277
280
return r .inspect .Execute (strings .TrimSpace (stdout .String ()))
278
281
}
279
282
283
+ type DockerContainerRestart struct {
284
+ executable Executable
285
+ }
286
+
287
+ func (r DockerContainerRestart ) Execute (containerID string ) error {
288
+ stderr := bytes .NewBuffer (nil )
289
+ err := r .executable .Execute (pexec.Execution {
290
+ Args : []string {"container" , "restart" , containerID },
291
+ Stderr : stderr ,
292
+ })
293
+ if err != nil {
294
+ return fmt .Errorf ("failed to restart docker container: %w: %s" , err , strings .TrimSpace (stderr .String ()))
295
+ }
296
+
297
+ return nil
298
+ }
299
+
280
300
type DockerContainerRemove struct {
281
301
executable Executable
282
302
}
0 commit comments