diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/docker.go | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/docker.go b/src/docker.go index df89e52..26b0b67 100644 --- a/src/docker.go +++ b/src/docker.go @@ -36,22 +36,31 @@ func setupDockerCLI() (err error) { return err } -func spawnCompanion(username string, accesscode string) string { +func spawnCompanion(username string, accesscode string) { log.Println("Spwaning a new companion container") // setup the context and the docker cli connection setupContext() setupDockerCLI() sessionSalt := generateSessionSalt() + vpnRemoteAddress := "127.0.0.1" + vpnRemotePort := "1193" + + log.Println("Generating the container config") Config := &container.Config{ Image: "circus-companion:latest", Cmd: []string{fmt.Sprintf("-username %s -accesscode %s -sessionSalt %s -vpnRemoteAddress %s -vpnRemotePort %s", username, accesscode, sessionSalt, vpnRemoteAddress, vpnRemotePort)}, + // Container labels used by traefik + Labels: map[string]string{ + "traefik.enable": "true", + "traefik.http.routers.companion.entrypoints": "web", + "traefik.http.routers.companion.rule": "Host(`companion.docker.localhost`)", + "traefik.http.services.companion.loadbalancer.server.port": "8080", + }, } HostConfig := &container.HostConfig{ - // ports (nat.PortMap) - // docker socket Mounts: []mount.Mount{ { Type: mount.TypeBind, @@ -66,16 +75,24 @@ func spawnCompanion(username string, accesscode string) string { }, } + containerNetworkID, err := setupNetwork("circus", true) + NetworkingConfig := &network.NetworkingConfig{ - // network + EndpointsConfig: map[string]*network.EndpointSettings{ + "circus": { + NetworkID: containerNetworkID, + }, + }, } + log.Println("Starting the container") + _, err := dockerCLI.ContainerCreate(dockerCtx, Config, HostConfig, NetworkingConfig, "") if err != nil { panic(err) } - return accesscode + log.Println("Container started") } func generateSessionSalt() string { |