SlideShare a Scribd company logo
Docker для PHP
разработчиков
Михаил Боднарчук
Codegyre
Twitter: @davert
GitHub: DavertMik
Skype: davert.ua
WWW: http://codeception.com
Михаил Боднарчук
✘ Веб-разработчик,
✘ Разрабатываю фреймворк для тестирования
Codeception, task-runner Robo и другие open-
source проекты.
✘ Люблю путешествовать.
✘ Изучаю NodeJS
Немного истории
Жизнь и становление веб-разработчика
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Symfony Zend Framework Vagrant
Composer JQuery Nginx
MongoDB Capistrano Yii
Redis ElasticSearch WebSockets
Chef Puppet Ansible
OAuth REST SOAP
HTML5 CSS Linux
PHPUnit GIT Docker
Docker
Открытая платформа для
разработки, доставки и
эксплуатации приложений.
Для чего использовать
Docker?
✘Создание среды для разработки
✘Сложная настройка сервисов
✘Легкая установка приложений
✘Доставка и развертывание приложений
✘Создание среды для тестирования
✘Парелелизация тестирования
✘Разработка микросервисов
✘….
Что такое Docker
✘Модное слово в веб-разработке
✘Система контейнеризации в Linux
✘ООП-дизайн вашей инфраструктуры
✘GitHub-like среда
Структура Docker
Что такое контейнер
✘«Дешевая» виртуализация
✘Изолированная файловая система
✘Изолированные процессы
Структура контейнеров
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
Dockerfile: Создание Image
FROM fedora:20
RUN yum install -y mongodb-server && yum clean all
RUN mkdir -p /var/lib/mongodb && 
touch /var/lib/mongodb/.keep && 
chown -R mongodb:mongodb /var/lib/mongodb
ADD mongodb.conf /etc/mongodb.conf
VOLUME [ "/data/db" ]
EXPOSE 27017
USER mongodb
WORKDIR /var/lib/mongodb
CMD mongod
Создание контейнера
docker build –t monga .
docker run –v $PWD/data:/data/db –p 27017:27017 monga
Один контейнер =
один сервис
Старайтесь разделять приложение
между контейнерами
Запуск WordPress
docker pull wordpress
docker pull mysql
docker run --name wp-mysql
MYSQL_ROOT_PASSWORD=123456 -d mysql
docker run --name my-wordpress --link
wp-mysql:mysql -p 8080:80 -d wordpress
Запуск WordPress через
Docker Compose
docker-compose.yml:
wordpress:
image:
wordpress
links:
- db:mysql
ports:
- 8080:80
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
docker-compose up
Создайние рабочего
окружения
✘Скачиваем нужные образы с Docker Registry
✘Связываем контейнеры через docker-compose
✘Подключаем папку с кодом
✘Запускаем docker-compose up
✘Делимся конфигурацией с коллегами
Deployment
Copy-Paste на сервер
По-простому
✘ Устанавливаем на сервере Docker
✘ Заворачиваем наше приложение в
контейнеры
✘ Заливаем на Docker Hub (docker push)
✘ Настраиваем docker-compose.yml
✘ Запускаем контейнеры: (docker-
compose up)
Используем Shipyard
✘ Система управления Docker
ресурсами
✘ Поставляется в виде Docker
контейнера
✘ Предоставляет REST API, WEB UI
✘ Позволяет легко деплоить
контейнеры на разные ноды
✘ Позволяет мониторить контейнеры
и смотреть логи
Shipyard: Список
контейнеров
Shipyard: Контейнер
Continuous Integration
Все на Докер!
Docker на CI
✘ Воспроизводит production среду
✘ Изолирует процессы
✘ Откатывает изменения
✘ Используется наверное всеми SaaS CI
(в том числе Travis CI)
Параллельный запуск тестов
на Jenkins
✘ Пакуем приложение в контейнер.
✘ Устанавливаем Matrix Project Plugin
✘ Одновременно запускаем тесты в
контейнере с разными параметрами
Параллельный запуск тестов
на Jenkins
docker run -i -t -v $WORKSPACE:/project test_container ./runtests.sh $SUITE
Runtests.sh
#!/bin/sh
echo "Starting Services...."
service elasticsearch start > /dev/null 2>&1
service nginx start > /dev/null 2>&1
service php5-fpm start > /dev/null 2>&1
service mysql start > /dev/null 2>&1
service memcached start > /dev/null 2>&1
phantomjs --webdriver=4444 > /dev/null 2>&1 &
mailcatcher -f > /dev/null 2>&1 &
echo "Running tests"
cd /project/$1 # switch to application
codecept run $2 # run tests from specific suite
Ожидаемый результат
Микросервисы
Наверное, просто невозможны без Docker!
Нужны ли вам микросервисы?
Резюмируем
Контейнеры! Контейнеры! Контейнеры
Почему мы не используем
Docker
✘ Впервые про него услышали
✘ Он только для Linux
✘ Новая технология – значит нестабильна
✘ Боязнь Vendor Lock-In
✘ Наше приложение монолитно
Docker позволяет запаковать
приложение (или данные) в
контейнер, залить на любой
сервер где есть Docker и
мгновенно запустить его.
Михаил Боднарчук "Docker для PHP разработчиков"
Спасибо!
Михаил Боднарчук @davert
http://docker.com
http://shipyard-project.com

More Related Content

PDF
Docker контейнерная революция
ODP
Docker : что это, зачем, и как им пользоваться
PPTX
Что такое Docker
PDF
Docker - счастье для хомячка или ника?
PDF
Docker for JS people
PDF
Docker. Основы
PDF
Депрокрастинируем Docker: контейнеры здесь и сейчас
Docker контейнерная революция
Docker : что это, зачем, и как им пользоваться
Что такое Docker
Docker - счастье для хомячка или ника?
Docker for JS people
Docker. Основы
Депрокрастинируем Docker: контейнеры здесь и сейчас

What's hot (20)

PPT
Docker - быстро, просто, наглядно
PDF
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
ODP
Введение в Docker
PDF
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
PDF
Кратчайшее введение в docker по-русски
PDF
My talk on Docker from Moscow Django Meetup #25
PPTX
Процесс разработки и тестирования с Docker + gitlab ci
PDF
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
ODP
Teach your dockers to use CRanes
PPTX
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...
PPTX
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
PDF
Docker networking
PDF
Проникновение в Docker с примерами
PDF
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
PDF
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
PDF
OpenStack и Docker: вместе и по отдельности
PDF
Как не стать рабом облака. PaaS 2.0 с Docker
PDF
Артём Ерошенко «Рецепт приготовления облачных тестингов»
PDF
Антон Каляев — Быстрое развертывание среды с Vagrant
PDF
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Docker - быстро, просто, наглядно
Доклад "Docker в Badoo: от восторгов к внедрению" на DevOps Meetup
Введение в Docker
TК°Conf. Микросервисы и Docker. Глеб Паньшин.
Кратчайшее введение в docker по-русски
My talk on Docker from Moscow Django Meetup #25
Процесс разработки и тестирования с Docker + gitlab ci
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Teach your dockers to use CRanes
Самоорганизующаяся сервисная инфраструктура на базе Docker / Данила Штань (То...
Elasticsearch(java) fluentbit(c++) fluentd(ruby) kibana(javascript)
Docker networking
Проникновение в Docker с примерами
Лучшие практики Continuous Delivery с Docker / Дмитрий Столяров (Флант)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
OpenStack и Docker: вместе и по отдельности
Как не стать рабом облака. PaaS 2.0 с Docker
Артём Ерошенко «Рецепт приготовления облачных тестингов»
Антон Каляев — Быстрое развертывание среды с Vagrant
Андрей Михайлов. Vagrant. Быстрое развертывание среды
Ad

Viewers also liked (19)

PDF
How to deploy PHP projects with docker
PPTX
Docker introduction
PDF
Docker: from understanding to production
PPTX
Docker в виртуальной среде VMware
PPTX
Сергей Калинец "Стероиды для Дотнетчика"
PPTX
Dockerizing WordPress
PDF
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
PDF
DevOps модное слово или следующая ступень эволюции
PDF
DevOps от и до - что, зачем и почему
PDF
WordPress + Docker - Reusable WordPress development environments
PDF
CQRS на практике. В поиске точки масштабирования и новых метафор
PPTX
Трансформация команды: от инди разработки к играм с коммерческой успешностью
PPTX
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
PDF
Евгений Жарков AngularJS: Good parts
PDF
Светлана Старикова "Building a self-managing team: why you should not have e...
PDF
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
PDF
Евгений Обрезков "Behind the terminal"
PDF
Илья Прукко: "Как дизайнеру не становиться художником"
How to deploy PHP projects with docker
Docker introduction
Docker: from understanding to production
Docker в виртуальной среде VMware
Сергей Калинец "Стероиды для Дотнетчика"
Dockerizing WordPress
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
DevOps модное слово или следующая ступень эволюции
DevOps от и до - что, зачем и почему
WordPress + Docker - Reusable WordPress development environments
CQRS на практике. В поиске точки масштабирования и новых метафор
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
Евгений Жарков AngularJS: Good parts
Светлана Старикова "Building a self-managing team: why you should not have e...
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Евгений Обрезков "Behind the terminal"
Илья Прукко: "Как дизайнеру не становиться художником"
Ad

Similar to Михаил Боднарчук "Docker для PHP разработчиков" (20)

PPTX
Docker и оркетсрация контейнеров в облаке Azure
PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
PPTX
Docker + Selenium Webdriver в рамках Continuous Integration
PDF
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
PPTX
Dev ops.events.v tymoshyk-20-oct-2016
PDF
Окружение разработчика - от виртуализации к контейнеризации
PPTX
Codeception + Docker + Robo и что из этого вышло
PDF
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
PPTX
Docker&Azure
PDF
Локальное окружение на Docker
PDF
Yet Another PaaS
PPTX
WebdriverIO + Puppeteer. Double gun – double fun
PDF
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
PDF
DevCon School. Azure Microservices and Containers
PDF
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
PPTX
PDF
GitLab, Prometheus и Grafana с Kubernetes
PPTX
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
PDF
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
PPTX
Docker-контейнеризация: от local до production
Docker и оркетсрация контейнеров в облаке Azure
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Dev ops.events.v tymoshyk-20-oct-2016
Окружение разработчика - от виртуализации к контейнеризации
Codeception + Docker + Robo и что из этого вышло
Andrii Medvedchuk "Kubernetes and Docker Basics for Running Web Apps"
Docker&Azure
Локальное окружение на Docker
Yet Another PaaS
WebdriverIO + Puppeteer. Double gun – double fun
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
DevCon School. Azure Microservices and Containers
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
GitLab, Prometheus и Grafana с Kubernetes
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Docker-контейнеризация: от local до production

More from Fwdays (20)

PDF
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
PDF
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
PPTX
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
PPTX
"Як ми переписали Сільпо на Angular", Євген Русаков
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
PDF
"Validation and Observability of AI Agents", Oleksandr Denisyuk
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
PPTX
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
PPTX
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
PDF
"AI is already here. What will happen to your team (and your role) tomorrow?"...
PPTX
"Is it worth investing in AI in 2025?", Alexander Sharko
PDF
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
PDF
"Scaling in space and time with Temporal", Andriy Lupa .pdf
PPTX
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
PPTX
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
PPTX
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
PPTX
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
"Як ми переписали Сільпо на Angular", Євген Русаков
"AI Transformation: Directions and Challenges", Pavlo Shaternik
"Validation and Observability of AI Agents", Oleksandr Denisyuk
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
"AI is already here. What will happen to your team (and your role) tomorrow?"...
"Is it worth investing in AI in 2025?", Alexander Sharko
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Database isolation: how we deal with hundreds of direct connections to the d...
"Scaling in space and time with Temporal", Andriy Lupa .pdf
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...

Михаил Боднарчук "Docker для PHP разработчиков"