Ejemplo n.º 1
0
    protected void ExecProgram(string containerName, IDappApp dapApp)
    {
      var display = Environment.GetEnvironmentVariable("DISPLAY");


      var args = Params(!dapApp.ExecProcess) | "exec";

      dapApp.Flags?.Aggregate(args, (current, flag) => current | flag);

      AppendUserParam(args, dapApp.User);

      args = args | containerName
             | "sh" | "-c" | (
               Params()
               + $"DISPLAY={display}"
               + $"{dapApp.Cmd}"
             );

      if (dapApp.ExecProcess)
      {
        Exec(args);
      }
      else
      {
        Run(
          param: args,
          stdin: false,
          stdout: false,
          stderr: false
        );
      }
    }
Ejemplo n.º 2
0
    public bool RunApp(string path, IDappApp dapApp, ContainerConfig config,
      RunOptions options = RunOptions.None)
    {
      var name = new DirectoryInfo(path).Name;
      var containerName = GetContainerName(name);
      var imageName = GetImageName(name);
      var status = GetContainerStatus(containerName);

      if (options.HasFlag(RunOptions.NeedKill) && (status == ContainerStatus.Running))
      {
        KillContainer(containerName);
        status = ContainerStatus.Stopped;
      }

      if (options.HasFlag(RunOptions.Recreate) || (status == ContainerStatus.Stopped))
      {
        RemoveContainer(containerName);
        status = ContainerStatus.NotExists;
      }

      if (options.HasFlag(RunOptions.Rebuild) || (status == ContainerStatus.NotExists))
      {
        Build(imageName, path, config.Vars, options.HasFlag(RunOptions.Optimize));
        status = ContainerStatus.Running;

        RunContainer(containerName, config, name, imageName);
        status = ContainerStatus.Running;
      }
      if (status == ContainerStatus.Stopped)
      {
        var args = Params()
                   | "start"
                   | containerName;

        RunNow(args);
        status = ContainerStatus.Running;
      }

      if (status == ContainerStatus.Running)
      {
        ExecProgram(containerName, dapApp);
      }


      return true;
    }