예제 #1
0
        private async Task MainLoop()
        {
            _logger.LogInformation("MainLoop Start");


            var containerService = new ContainerService();

            containerService.MessageCalled = (x => _logger.LogInformation(x));

            while (!_stoppingCts.IsCancellationRequested)
            {
                try
                {
                    //コンテナ情報読み込み
                    var containerSettingList = await LoadContainerSettingsList();

                    ///jsonにないcontainerを削除ループ
                    var RunningContainers = await containerService.GetAllContainer();

                    foreach (var rc in RunningContainers)
                    {
                        if (!containerSettingList.ContainerSettings.Any(x => $"{x.Image}:{x.Tag}" == $"{rc.Image}") == true)
                        {
                            if (IsIgnoreContainer(rc.Image))
                            {
                                if (farmingSetting.ContainerRemove == FARMING_SETTING_TRUE)
                                {
                                    _logger.LogInformation($"Container Stop & Remove:{rc.Image}");
                                    await containerService.StopAndDeleteContainer(rc.ID);
                                }
                                else
                                {
                                    _logger.LogInformation($"Container Stop :{rc.Image}");
                                    await containerService.StopContainer(rc.ID);
                                }
                            }
                        }
                    }

                    //起動ループ
                    foreach (var targetContainer in containerSettingList.ContainerSettings)
                    {
                        string target_image     = targetContainer.Image;
                        string target_image_tag = targetContainer.Tag;


                        await containerService.StartContainer(targetContainer);
                    }
                }catch (Exception ex)
                {
                    _logger.LogError(ex.ToString());
                }
                await Task.Delay(farmingSetting.WaitTime);
            }
        }