MCPcopy Index your code
hub / github.com/bytesizedhosting/bcd / Install

Method Install

plugins/plex/plex.go:36–89  ·  view source on GitHub ↗
(opts *PlexOpts)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 1

SetDefaultMethod · 0.80

Tested by

no test coverage detected