SlideShare a Scribd company logo
ТЕСТОВЫЙ СТЕНД
ДЛЯ БОЛЬШОГО ЧИСЛА
ПРОЕКТОВ НА DOCKER’E
- Нужна поддержка автоматической сборки TeamCity
- Сложность при последующих релизах (сложно
воспроизвести окружение)
Ситуация
- Один сервер для тестов
- Большое число проектов в разработке и тестировании
(несколько десятков, которые влияют друг
на друга окружением и зависимостями)
Docker
- Остаются вопросы как добавлять / удалять
проекты на сервере
+ Сборка поддерживается многми CI/CD
+ Легко релизить «просто» выкатывая контейнер
на боевой сервер
+ Позволяет собирать проект в контейнеры с нужным
окружением
+ Можно держать много проектов на сервере
независимо друг от друга
Developer
User
git merge
develop
cvs trigger
TeamCity
GitHub
Traefik proxy
doker build
doker push
Doker registry
scp doker-compose
doker-compose up
doker pull
Dev-stage
docker
Решение 1
2
— Легко находит общий язык с каждым членом команды
— Грамотно организует работы высоконагруженных проектов
-/
-- Service1/
---- Dockerfile
-- Service2/
---- Dockerfile
-- docker-composer.develop.yml
-- docker-composer.stage.yml
-- docker-composer.production.yml
Разработчик: docker-compose up -d
Тестовый сервер: docker-compose -f docker-compose.develop.yml up -d
Продакшен: docker stack deploy -c docker-compose.yml stack-name
Структура проекта
# docker-compose разработчика
services:
app:
image: nginx-php-fpm
volume:
- ./Service1/src:/var/www/
#####################################################################
# docker-compose стенда
services:
app:
image: registy.domain.handh.ru/service1:latest
environment:
MYSQL_PASSWORD: "password"
MYSQL_DATABASE: "my_db"
labels:
- "traefik.frontend.rule=Host:service1.headsandhands.ru"
- "traefik.port=8080"
- "traefik.docker.network=proxy"
networks:
proxy:
external: true
Установка и настройка
Docker-registry
Web UI
Harbor / Portus / WebRegistry
docker run -d -p 5000:5000 --restart=always --name registry registry:2
Сборка проекта
Шаблон из 3х шагов
TeamCity
1. docker build
2. docker push
3. scp docker-compose.stage.yml
docker-compose pull
docker-compose up -d
Прокси-сервер traefik
СПАСИБО
Тестовый стенд для большого числа проектов на Docker

More Related Content

What's hot

Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
GetDev.NET
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TKConf
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
Ruslan Sharipov
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
Andrey Markelov
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Badoo Development
 
Docker 1.9
Docker 1.9Docker 1.9
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
OpenVZ
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Fwdays
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanes
Pavel Emelyanov
 
Docker: from understanding to production
Docker: from understanding to productionDocker: from understanding to production
Docker: from understanding to production
Anton Turetsky
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе docker
Ivan Grishaev
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и Docker
Andrey Markelov
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
Александр Сигачев
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в Яндексе
Andrey Kazarinov
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
ITCrowd Almaty
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Александр Сигачев
 
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
corehard_by
 
Docker. Зачем он нам?
Docker. Зачем он нам?Docker. Зачем он нам?
Docker. Зачем он нам?
Andrey Gerasimov
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
Михаил Бакулин
 
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопомSECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON
 

What's hot (20)

Docker контейнерная революция
Docker контейнерная революцияDocker контейнерная революция
Docker контейнерная революция
 
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.TК°Conf. Микросервисы и Docker. Глеб Паньшин.
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
 
Депрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчасДепрокрастинируем Docker: контейнеры здесь и сейчас
Депрокрастинируем Docker: контейнеры здесь и сейчас
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
 
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps MeetupДоклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
 
Docker 1.9
Docker 1.9Docker 1.9
Docker 1.9
 
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел ТихомировРазвёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
Развёртывание приложений Docker в контейнерах Virtuozzo -- Павел Тихомиров
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
 
Teach your dockers to use CRanes
Teach your dockers to use CRanesTeach your dockers to use CRanes
Teach your dockers to use CRanes
 
Docker: from understanding to production
Docker: from understanding to productionDocker: from understanding to production
Docker: from understanding to production
 
Ci на базе docker
Ci на базе dockerCi на базе docker
Ci на базе docker
 
RHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и DockerRHEL 7. Контейнеры и Docker
RHEL 7. Контейнеры и Docker
 
Процесс разработки и тестирования с Docker + gitlab ci
Процесс разработки и тестирования с  Docker + gitlab ciПроцесс разработки и тестирования с  Docker + gitlab ci
Процесс разработки и тестирования с Docker + gitlab ci
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в Яндексе
 
Docker с чем едят и для чего используют
Docker с чем едят и для чего используютDocker с чем едят и для чего используют
Docker с чем едят и для чего используют
 
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)Elasticsearch(java) fluentbit(c++)    fluentd(ruby) kibana(javascript)
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
 
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
Контроль окружения сборки C++ проектов с помощью Docker. Павел Филонов. CoreH...
 
Docker. Зачем он нам?
Docker. Зачем он нам?Docker. Зачем он нам?
Docker. Зачем он нам?
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
 
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопомSECON'2016. Кириллов Александр, Continuous Integration под микроскопом
SECON'2016. Кириллов Александр, Continuous Integration под микроскопом
 

Similar to Тестовый стенд для большого числа проектов на Docker

"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Provectus
 
Docker
DockerDocker
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
Anatoly Popov
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
Anton Turetsky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
Badoo Development
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Ontico
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
corehard_by
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
Positive Hack Days
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
LogeekNightUkraine
 
Docker&Azure
Docker&AzureDocker&Azure
Docker&Azure
Oleg Chorny
 
Как не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с DockerКак не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с Docker
trukhinyuri
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
MskDotNet Community
 
Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииAlexander Kirillov
 
Debian Installer (D-I): Промышленная платформа создания специализированных ди...
Debian Installer (D-I): Промышленная платформа создания специализированных ди...Debian Installer (D-I): Промышленная платформа создания специализированных ди...
Debian Installer (D-I): Промышленная платформа создания специализированных ди...
Vladimir Shakhov
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
COMAQA.BY
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
OpenStackRussia
 
Совместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местСовместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих мест
Dell_Russia
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
sandy97
 
Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
 Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов  Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
it-people
 
Docker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутомDocker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутом
Anton Turetsky
 

Similar to Тестовый стенд для большого числа проектов на Docker (20)

"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 
Docker
DockerDocker
Docker
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
 
Docker&Azure
Docker&AzureDocker&Azure
Docker&Azure
 
Как не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с DockerКак не стать рабом облака. PaaS 2.0 с Docker
Как не стать рабом облака. PaaS 2.0 с Docker
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
 
Окружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризацииОкружение разработчика - от виртуализации к контейнеризации
Окружение разработчика - от виртуализации к контейнеризации
 
Debian Installer (D-I): Промышленная платформа создания специализированных ди...
Debian Installer (D-I): Промышленная платформа создания специализированных ди...Debian Installer (D-I): Промышленная платформа создания специализированных ди...
Debian Installer (D-I): Промышленная платформа создания специализированных ди...
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
OpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельностиOpenStack и Docker: вместе и по отдельности
OpenStack и Docker: вместе и по отдельности
 
Совместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местСовместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих мест
 
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store2 Продуктивность работы в IDE; Разработка для Windows 10 Store
2 Продуктивность работы в IDE; Разработка для Windows 10 Store
 
Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
 Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов  Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
Continuous Integration под микроскопом, Александр Кириллов, Evrone, Саратов
 
Docker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутомDocker & Badoo: 
никогда не останавливайся на достигнутом
Docker & Badoo: 
никогда не останавливайся на достигнутом
 

Тестовый стенд для большого числа проектов на Docker

  • 1. ТЕСТОВЫЙ СТЕНД ДЛЯ БОЛЬШОГО ЧИСЛА ПРОЕКТОВ НА DOCKER’E
  • 2. - Нужна поддержка автоматической сборки TeamCity - Сложность при последующих релизах (сложно воспроизвести окружение) Ситуация - Один сервер для тестов - Большое число проектов в разработке и тестировании (несколько десятков, которые влияют друг на друга окружением и зависимостями)
  • 3. Docker - Остаются вопросы как добавлять / удалять проекты на сервере + Сборка поддерживается многми CI/CD + Легко релизить «просто» выкатывая контейнер на боевой сервер + Позволяет собирать проект в контейнеры с нужным окружением + Можно держать много проектов на сервере независимо друг от друга
  • 4. Developer User git merge develop cvs trigger TeamCity GitHub Traefik proxy doker build doker push Doker registry scp doker-compose doker-compose up doker pull Dev-stage docker Решение 1 2
  • 5. — Легко находит общий язык с каждым членом команды — Грамотно организует работы высоконагруженных проектов -/ -- Service1/ ---- Dockerfile -- Service2/ ---- Dockerfile -- docker-composer.develop.yml -- docker-composer.stage.yml -- docker-composer.production.yml Разработчик: docker-compose up -d Тестовый сервер: docker-compose -f docker-compose.develop.yml up -d Продакшен: docker stack deploy -c docker-compose.yml stack-name Структура проекта
  • 6. # docker-compose разработчика services: app: image: nginx-php-fpm volume: - ./Service1/src:/var/www/ ##################################################################### # docker-compose стенда services: app: image: registy.domain.handh.ru/service1:latest environment: MYSQL_PASSWORD: "password" MYSQL_DATABASE: "my_db" labels: - "traefik.frontend.rule=Host:service1.headsandhands.ru" - "traefik.port=8080" - "traefik.docker.network=proxy" networks: proxy: external: true
  • 7. Установка и настройка Docker-registry Web UI Harbor / Portus / WebRegistry docker run -d -p 5000:5000 --restart=always --name registry registry:2
  • 8. Сборка проекта Шаблон из 3х шагов TeamCity 1. docker build 2. docker push 3. scp docker-compose.stage.yml docker-compose pull docker-compose up -d