MCPcopy Create free account
hub / github.com/bytesizedhosting/bcd / Install

Method Install

plugins/sonarr/sonarr.go:35–90  ·  view source on GitHub ↗
(opts *SonarrOpts)

Source from the content-addressed store, hash-verified

33}
34
35func (self *Sonarr) Install(opts *SonarrOpts) error {
36 var err error
37
38 err = opts.SetDefault(self.Name)
39 if err != nil {
40 return err
41 }
42
43 log.WithFields(log.Fields{
44 "plugin": self.Name,
45 "datafolder": opts.DataFolder,
46 "configfolder": opts.ConfigFolder,
47 "media_folder": opts.MediaFolder,
48 "username": opts.Username,
49 }).Debug("Sonarr options")
50
51 err = os.MkdirAll(opts.ConfigFolder, 0755)
52 if err != nil {
53 return err
54 }
55
56 log.Debugln("Pulling docker image", self.imageName)
57 err = self.DockerClient.PullImage(docker.PullImageOptions{Repository: self.imageName}, docker.AuthConfiguration{})
58 if err != nil {
59 return err
60 }
61
62 portBindings := map[docker.Port][]docker.PortBinding{
63 "8989/tcp": []docker.PortBinding{docker.PortBinding{HostPort: opts.WebPort}},
64 }
65
66 hostConfig := docker.HostConfig{
67 PortBindings: portBindings,
68 Binds: plugins.DefaultBindings(opts),
69 }
70
71 conf := docker.Config{Env: []string{"PUID=" + opts.User.Uid}, Image: self.imageName}
72
73 log.Debugln("Creating docker container")
74 c, err := self.DockerClient.CreateContainer(docker.CreateContainerOptions{Config: &conf, HostConfig: &hostConfig, Name: "bytesized_sonarr_" + opts.WebPort})
75
76 if err != nil {
77 return err
78 }
79
80 log.Debugln("Starting docker container")
81
82 err = self.DockerClient.StartContainer(c.ID, nil)
83 if err != nil {
84 return err
85 }
86
87 opts.ContainerId = c.ID
88
89 return nil
90}

Callers

nothing calls this directly

Calls 1

SetDefaultMethod · 0.80

Tested by

no test coverage detected