{"id":20811344,"url":"https://github.com/express42/docker-mk-5","last_synced_at":"2025-03-12T04:43:34.502Z","repository":{"id":66323629,"uuid":"83721130","full_name":"express42/docker-mk-5","owner":"express42","description":null,"archived":false,"fork":false,"pushed_at":"2018-10-24T11:21:27.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":3,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-01-18T14:46:45.732Z","etag":null,"topics":["docker","education","masterclass","training"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/express42.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-02T20:23:01.000Z","updated_at":"2018-10-24T11:21:29.000Z","dependencies_parsed_at":"2023-03-13T20:29:55.697Z","dependency_job_id":null,"html_url":"https://github.com/express42/docker-mk-5","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fdocker-mk-5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fdocker-mk-5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fdocker-mk-5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/express42%2Fdocker-mk-5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/express42","download_url":"https://codeload.github.com/express42/docker-mk-5/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243158972,"owners_count":20245669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","education","masterclass","training"],"created_at":"2024-11-17T20:40:24.648Z","updated_at":"2025-03-12T04:43:34.483Z","avatar_url":"https://github.com/express42.png","language":"Shell","readme":"\n\n# Docker-mk-5\n\nИнсрукция по использованию скрипта развертывания\n```\n$ mk-helpers/preseed.sh\nUsage:\n--provision        -        provision VM and deploy gitlab on it\n--seed             -        seed projects from backup\n--create_images    -        create base docker images for ci builds and push them to registry\n--runner           -        reconfigure gitlab ci runner\n--full             -        fulfill all presented actions\n-p                 -        along with --provision used to up parallels env\n-v                 -        along with --provision used to up virtualbox env\n```\n\n## Quick start\n\nСкачать сам репозиторий\n```\n$ git clone https://github.com:chromko/docker-mk-5-new.git\n$ cd docker-mk-5-new\n```\n\n```\nВ файле data/creds.env выставить значения переменных\n```\nNAME=your_name\n```\n\nЗапустить процесс развертывания в AWS и ждать завершения\n```\nmk-helpers/preseed.sh --full\n...\nАдрес вашего сервера: \u003cАдрес вашей docker machine\u003e\nGitlab login: root\nGitlab password: dockermk\n\n```\nДля развертывания в parallels или virtualbox указать флаг '-p' или '-v' соответственно\n```\nmk-helpers/preseed.sh --full -p\n```\n\nДля подключения к docker-engine на созданной ВМ запустить:\n```\nsource mk-helpers/env.vars\ndocker ps\n....\n\nКлонировать репозитории для мк (будут содержаться в папке module5_app):\n```\nsh mk-helpers/clone-repos.sh\n```\n\n## Gitlab Workflow\n\n1. Автоматическое развертывание стенда mk-helpers/preseed.sh:\n  - --provision\n    - Поднятие виртуальной машины (aws,parallels,virtualbox)\n    - Подготовка dockerd и /etc/hosts для использования insecure local registry\n  - --seed\n    - Восстановление базы проектов из бекапа\n    - Внесение secure variables в каждый проект (DEV\\_HOST и BUILD\\_TOKEN)\n  - --create\\_images\n    - Клонирование репозиториев для базовых образов docker (dind, git-compose)\n    - Сборка образов и push в local registry\n  - --runner\n    - (пере)создание toml файла для gitla-ci-runner и перезапуск контейнера\n  - --full\n    - все вместе\n2. Запуск gitlab-ci pipeline\n  - Подготовка\n    - В gitlab-ci-runner через volume пробрасывается sock\n    - Для ускорения и упрощения коммуникации каждый сборочный контейнер присоединяется к сети dockermk5\\_default (в ней нахоядтся сам runner и gitlab с его  gitlab-registry.local)\n    - Gitlab-ci-runner запускает контейнер из образа docker:dind\n    - Gitlab-ci-runner запускает runner контейнер\n    - В переменной окружения DOCKER\\_HOST (.gitlab-ci.yml файл) ссылаемся на docker-engine внутри контенера с docker:dind\n    - Используется переменная DOCKER\\_DRIVER со значением используемого storage driver для сборки образов (vfs по-умолчанию медленный)\n  - Ход работы\n    - Внутри runner контенера происходит процесс одного job\u0026#39;а\n    - Job\u0026#39; ы в одинаковом stage проекта выполняются параллельно (и в разных проектах, если позволяет  concurrent значение runner\u0026#39;а)\n    - После окончания job\u0026#39;ы контейнер выключается, а вся информация по сборке пропадает (кроме /cached и /artifacts (если есть).\n  - Во время сборок проектов используется несколько директив docker\n    - --cache-from  - позволяет использовать скаченный(pull) образ и как источник сборочного кэша\n    - --pull  - заставляет docker постоянно проверять актуальную версию базового образа (FROM image:tag )\n  - В случае необходимости сохранить собранный артифакт в виде docker образа – происходит push в local registry\n  - Chaining\n    - После release стадии запускается стадия notify, которая , используя BUILD\\_TOKEN (постоянный, выданный пользователю root) и id проекта, создает новый pipeline этого проекта\n3. Deploy\n  - На стадии deploy запускается docker-compose, который разворачивает на DEV\\_HOST машине контейнеры с проектом блога.\n  - Во вкладке pipelines-\u0026gt;environments проекта(blog\\_ui) появляется запись о созданном окружении(dev) и ссылка на сайт проекта. У остальных(blog\\_backend, mongodb) deployment проектов ссылки  нет (окружение есть).\n\n## Gitlab Ci Monitoring\n\n1. Gitlab имеет встроенный Prometheus, а также ряд экспортеров:\n  - Node exporter\n  - Gitalb-monitor(Database, Sidekiq, Process); В версии 1.3 экспортера завезли статистику билдов (пока не в релизе гитлаба)\n  - Redis\n  - Postgres\n  - Prometheus\n  - Kubernetes\n  - Gitlab-ci-runner exporter (запускается с помощью директивы monitor\\_server в toml)\n  - Gilab pages\n2. Gitlab EE имеет deploy-board\n3. Gitlab может выводить dashboards для мониторинга kubernetes приложений\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fdocker-mk-5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpress42%2Fdocker-mk-5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpress42%2Fdocker-mk-5/lists"}