Hands on Docker - Launch your own LEMP or LAMP stack

@danaluther
Hands on Docker:
Launch Your Own LEMP or LAMP Stack
Dana Luther
https://git.io/JvUy5
@danaluther
What are we going to do today, Brain?
Set up standard LAMP and LEMP stacks using Docker stack
Modify the stack to mimic production
Run codeception test suites against our application
Learn how to swap out php versions
Add and remove additional services
@danaluther
Where are you on your Docker
journey?
Brand new to this
rodeo…
Docker containers are
my jam!
I am Docker.
@danaluther
Everyone set up and ready?
Docker Desktop installed and running
Checked out the GIT repo
Pulled the docker images
Anyone using Windows? Set to use LCOW?
@danaluther
Moving beyond containers…
@danaluther
Moving beyond containers…
Image Container Service Stack
@danaluther
Moving beyond containers…
Image Container Service Stack App
@danaluther
Moving beyond containers…
Image Container Service Stack App
@danaluther
Release the swarm!
> docker swarm init
@danaluther
Basic LAMP Stack
docker-compose.yml
php:7.4-apache
mysql
01_LAMP
@danaluther
Basic LAMP Stack
version: "3.7"
services:
php:
# https: //hub.docker.com/_/php
image: php:7.4-apache
ports:
- 80:80
volumes:
- ./src:/var/ www/html
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_pwd
secrets:
- db_pwd
secrets:
db_pwd:
file: ./root_db_password.txt
docker-compose.yml
01_LAMP
@danaluther
Basic LAMP Stack
> docker stack deploy -c docker-compose.yml hod
Make sure you are on the 01_LAMP branch of the workshop repo
01_LAMP
@danaluther
Basic LAMP Stack
> docker stack deploy -c docker-compose.yml hod
Make sure you are on the 01_LAMP branch of the workshop repo
01_LAMP
@danaluther
Verify the services have all launched
> docker service ls
01_LAMP
@danaluther
Verify the services have all launched
> docker service ls
01_LAMP
⚠ Common “Gotcha”
@danaluther
No public port for MySQL unless you *want* to expose it externally.
@danaluther01_LAMP
@danaluther01_LAMP
SIDEBAR:
@danaluther
What’s in a stock PHP image?
> docker run --rm php:7.4-fpm php-fpm -m
SIDEBAR:
@danaluther
What’s in a stock PHP image?
@danaluther
Creating our custom PHP image
Add the mysqli and PDO_mysql
extensions
Use build args in the Dockerfile
ARG PHP_TARGET=7.4-apache
FROM php:$PHP_TARGET
RUN docker-php-ext-install 
-j$(nproc) mysqli pdo_mysql
02_LAMP
@danaluther
Enabling Buildkit
@danaluther
Creating our custom PHP image
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.4-apache-mysql .
From the /images/ directory:
02_LAMP
@danaluther
Creating our custom PHP image
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.4-apache-mysql .
From the /images/ directory:
02_LAMP
@danaluther
Update our LAMP stack
version: "3.7"
services:
php:
# Custom PHP Image - see /images/Readme.md
image: dhluther/php:7.4-apache-mysql
ports:
- 80:80
volumes:
- ./src:/var/ www/html
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_pwd
secrets:
- db_pwd
secrets:
db_pwd:
file: ./root_db_password.txt
02_LAMP
@danaluther
Re-deploy the LAMP stack
> docker stack deploy -c docker-compose.yml hod
@danaluther
Re-deploy the LAMP stack
> docker stack deploy -c docker-compose.yml hod
@danaluther02_LAMP
@danaluther
<?
/**
* mysql-check.php
*/
try
{
$db = new PDO('mysql:host=db', 'root', 'sup3rs3cr3tp4ssw0rd');
echo 'MySQL Version: ',
$db ->getAttribute(PDO ::ATTR_CLIENT_VERSION);
} catch (Exception $e)
{
echo 'Aw shucks pardner, ', $e ->getMessage();
}
02_LAMP
@danaluther
Checking the service logs
02_LAMP
> docker service logs hod_php
@danaluther
Checking the service logs
02_LAMP
> docker service logs hod_php
@danaluther
Take the stack down
02_LAMP
> docker stack rm hod
@danaluther
Basic LEMP Stack
docker-compose.yml
php:7.4-fpm
mysql
nginx
03_LEMP
@danaluther
Basic LEMP Stack
03_LEMP
version: "3.7"
services:
php:
image: dhluther/php:7.4-fpm-mysql
volumes:
- ./src:/var/ www/html
…db…
web:
image: nginx
ports:
- 80:80
- 443:443
volumes:
- ./src:/var/ www/html
configs:
- source: nginx-conf
target: /etc/nginx/conf.d/default.conf
secrets:
db_pwd:
file: ./root_db_password.txt
configs:
nginx-conf:
file: ./nginx/default.conf
@danaluther
Creating our custom PHP-FPM image
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.4-fpm-mysql . 
--build-arg PHP_TARGET=7.4-fpm
From the /images/ directory:
03_LEMP
@danaluther03_LEMP
@danaluther
Deploy the LEMP stack
> docker stack deploy -c docker-compose.yml hod
03_LEMP
@danaluther03_LEMP
@danaluther03_LEMP
⚠ Common “Gotcha”
@danaluther
NO PERSISTENT DATA!
03_LEMP
⚠ Common “Gotcha”
@danaluther
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_pwd
secrets:
- db_pwd
NO PERSISTENT DATA!
03_LEMP
⚠ Common “Gotcha”
@danaluther
PERSISTENT DATA!
04_LEMP
⚠ Common “Gotcha”
@danaluther
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_pwd
volumes:
- ./data:/var/lib/mysql
secrets:
- db_pwd
PERSISTENT DATA!
04_LEMP
@danaluther
Fresh deploy the Stack
04_LEMP
> docker stack rm hod
> docker stack deploy -c docker-compose.yml hod
@danaluther
Quick Break - Stretch!
@danaluther
The stack is standard, but are we?
@danaluther
The stack is standard, but are we?
Customized config files:
php.ini and php.conf
my.conf
nginx.conf
@danaluther
The stack is standard, but are we?
Customized config files:
php.ini and php.conf
my.conf
nginx.conf
Customized images:
my/php
my/mysql
my/nginx
@danaluther
Basic LEMP Stack (flashback)
03_LEMP
version: "3.7"
services:
php:
image: dhluther/php:7.4-fpm-mysql
volumes:
- ./src:/var/ www/html
…db…
web:
image: nginx
ports:
- 80:80
- 443:443
volumes:
- ./src:/var/ www/html
configs:
- source: nginx-conf
target: /etc/nginx/conf.d/default.conf
secrets:
db_pwd:
file: ./root_db_password.txt
configs:
nginx-conf:
file: ./nginx/default.conf
@danaluther
What’s in the default nginx.conf?
> docker run --rm nginx cat /etc/nginx/nginx.conf
@danaluther
@danaluther05_LEMP
# Max file size for uploads
client_max_body_size 20m;
# Sets the cache for 1k items for 1 minute
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 60s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
# GZIP compression settings, text/html is automatically compressed
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_comp_level 5;
gzip_buffers 16 8k;
gzip_min_length 350;
gzip_proxied any;
gzip_types application/atom+xml application/rss+xml application/x-javascript application/javascript application/json text/plain text/css text/x-
component text/x-cross-domain-policy text/javascript;
# disable auto-index across the board by default
autoindex off;
# disable server side includes by default
ssi off;
@danaluther
Update NGiNX configs
05_LEMP
version: "3.7"
services:
php:
image: dhluther/php:7.4-fpm-mysql
volumes:
- ./src:/var/ www/html
…db…
web:
…
configs:
- source: nginx-conf
target: /etc/nginx/conf.d/default.conf
- source: nginx-base—conf
target: /etc/nginx/nginx.conf
secrets:
db_pwd:
file: ./root_db_password.txt
configs:
nginx-conf:
file: ./nginx/default.conf
nginx-base-conf:
file: ./nginx/nginx.conf
@danaluther
What’s in our PHP config?
@danaluther
What might you need to customize?
Timezone setting
Error reporting
Output caching and buffering
Listen directives
Ping/Status directives
Timeouts and extension limitations
@danaluther
Create custom .ini and .conf files
tz.ini — /usr/local/etc/php/conf.d/
custom.ini — /usr/local/etc/php/conf.d/
www.mysite.conf — /usr/local/etc/php-fpm.d/
05_LEMP
@danaluther
Update php image Dockerfile
05_LEMP
@danaluther
Build the php image
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.4-fpm-mysql-c 
--target=customized . 
--build-arg PHP_TARGET=7.4-fpm
05_LEMP
@danaluther
Build the php image
05_LEMP
@danaluther
Update compose with new php image
php:
# Custom PHP Image - see /images/Readme.md
image: dhluther/php:7.4-fpm-mysql-c
volumes:
- ./src:/var/www/html
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
@danaluther
Verify ini files loaded
@danaluther
Head to the watering hole!
(aka coffee break)
@danaluther
Great - we match production.
But what about testing??
@danaluther
Add xdebug and blackfire probe
07_LEMP
@danaluther
Build the debug image
07_LEMP
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.4-debug 
--target=debug . 
--build-arg PHP_TARGET=7.4-fpm
@danaluther
Build the debug image
07_LEMP
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.4-debug 
--target=debug . 
--build-arg PHP_TARGET=7.4-fpm
@danaluther
Build the debug image
07_LEMP
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.4-debug 
--target=debug . 
--build-arg PHP_TARGET=7.4-fpm
SIDEBAR:
@danaluther
https://blackfire.io/docs/integrations/docker
blackfire:
image: blackfire/blackfire
ports:
- "8707:8707"
environment:
# Tokens for your account
- BLACKFIRE_CLIENT_ID =<insert id here>
- BLACKFIRE_CLIENT_TOKEN =<insert token here>
# Tokens for your environment
- BLACKFIRE_SERVER_ID =<insert id here>
- BLACKFIRE_SERVER_TOKEN =<insert token here>
- BLACKFIRE_LOG_LEVEL=4
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
07_LEMP
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
07_LEMP
@danaluther07_LEMP
@danaluther07_LEMP
@danaluther
What and how do we want to test?
Use composer to require testing framework
@danaluther
Update compose with composer
composer:
image: composer:latest
command: ['bash','-c',"sleep infinity"]
volumes:
- ./src:/var/ www/html
08_LEMP
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
08_LEMP
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
08_LEMP
@danaluther
Initialize composer
> docker exec -it $(docker ps -lq -f name=hod_composer) 
bash
08_LEMP
@danaluther
Initialize composer
> docker exec -it $(docker ps -lq -f name=hod_composer) 
bash
08_LEMP
SIDEBAR:
@danaluther
> docker ps -lq -f name=stack_service
The command to rule them all …
> docker exec -it 36fce0da4a8f bash
> docker exec -it $(docker ps -lq -f name=hod_php) 
bash
@danaluther
Initialize composer
> docker exec -it $(docker ps -lq -f name=hod_composer) 
bash
08_LEMP
@danaluther
Require codeception
bash-5.0# composer require codeception/codeception --dev
08_LEMP
@danaluther
Alternately … composer install
bash-5.0# composer install
09_LEMP
@danaluther
Confirm codeception installation
09_LEMP
@danaluther
Access via a php container
> docker exec -it $(docker ps -lq -f name=hod_php) 
bash
09_LEMP
@danaluther
Verify that you can run unit tests
10_LEMP
@danaluther
Enable headless browsers for testing
@danaluther
Enable headless browsers for testing
Update docker-compose.yml with Chrome and Firefox images
@danaluther
Enable headless browsers for testing
Update docker-compose.yml with Chrome and Firefox images
Default to 0 containers - scale the service up/down as needed
@danaluther
Enable headless browsers for testing
Update docker-compose.yml with Chrome and Firefox images
Default to 0 containers - scale the service up/down as needed
Take advantage of x-defaults in the .yml to keep the compose file dry
@danaluther
Setting up x-defaults
x-defaults:
network: &network
networks:
- net
selenium-services: &selenium-svc
environment:
# Required to avoid container startup hanging sometimes in
# some environments
JAVA_OPTS: -Djava.security.egd=file:/dev/./urandom
ports:
- "4444:4444"
deploy:
replicas: 0
restart_policy:
condition: on-failure
<<: *network
10_LEMP
@danaluther
Implementing x-default network
php:
# Custom PHP Image - see /images/Readme.md
image: dhluther/php:7.4-debug
volumes:
- ./src:/var/ www/html
<<: *network
…
networks:
net:
10_LEMP
@danaluther
Setting up Chrome and Firefox
#Used for Acceptance Tests for Firefox
firefox:
image: selenium/standalone-firefox-debug:2.53.0
<<: *selenium-svc
#Used for Acceptance Tests for Chrome
chrome:
image: selenium/standalone-chrome-debug
<<: *selenium-svc
ports:
- "4443:4444"
10_LEMP
@danaluther
Deploy and Scale services
10_LEMP
@danaluther
What if we forget to scale up chrome?
10_LEMP
@danaluther
So how do we swap out php
versions?
@danaluther
Build the 7.3-fpm image
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.3-fpm-mysql-c 
--target=customized . 
--build-arg PHP_TARGET=7.3-fpm
10_LEMP
@danaluther
Build the 7.3-fpm image
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.3-fpm-mysql-c 
--target=customized . 
--build-arg PHP_TARGET=7.3-fpm
10_LEMP
> docker image build -f Dockerfile-php-mysql 
-t dhluther/php:7.3-debug 
--target=debug . 
--build-arg PHP_TARGET=7.3-fpm
@danaluther
Build the 7.3-fpm image
10_LEMP
@danaluther
Update the service
> docker service update 
--image=dhluther/php:7.3-fpm-mysql-c 
hod_php
@danaluther
Update the service
> docker service update 
--image=dhluther/php:7.3-fpm-mysql-c 
hod_php
@danaluther
Run our unit test
@danaluther
@danaluther
Verify the MySQL page
@danaluther
Roll back the service
> docker service rollback hod_php
@danaluther
But what about additional services?
@danaluther
Add new services to our stack
phpMyAdmin — https://www.phpmyadmin.net/
Redis — https://redis.io/
@danaluther
Define the phpMyAdmin service
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
deploy:
replicas: 1
restart_policy:
condition: on-failure
ports:
- 8081:80
<<: *network
volumes:
- /sessions
11_LEMP
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
11_LEMP
@danaluther
localhost:8081
@danaluther
Define the redis service
redis:
image: redis:latest
volumes:
- ./data_redis:/data
deploy:
placement:
constraints: [node.role == manager]
<<: *network
12_LEMP
@danaluther
Deploy stack updates
> docker stack deploy -c docker-compose.yml hod
12_LEMP
@danaluther
Verify redis is running
@danaluther
Shut it down!
> docker stack rm hod
> docker swarm leave --force
@danaluther
Questions??
🤔
?
? ?
?
https://www.linkedin.com/in/danaluther
dluther@envisageinternational.com
https://git.io/JvUy5
1 of 116

Recommended

Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP by
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
406 views151 slides
Ansible new paradigms for orchestration by
Ansible new paradigms for orchestrationAnsible new paradigms for orchestration
Ansible new paradigms for orchestrationPaolo Tonin
813 views82 slides
PECL Picks - Extensions to make your life better by
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterZendCon
4.1K views74 slides
Converting Your Dev Environment to a Docker Stack - php[world] by
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Dana Luther
311 views159 slides
Docker for PHP Developers - ZendCon 2016 by
Docker for PHP Developers - ZendCon 2016Docker for PHP Developers - ZendCon 2016
Docker for PHP Developers - ZendCon 2016Chris Tankersley
565 views84 slides
Converting Your Dev Environment to a Docker Stack - Cascadia by
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaDana Luther
195 views128 slides

More Related Content

What's hot

Reusable, composable, battle-tested Terraform modules by
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesYevgeniy Brikman
28.4K views150 slides
Python Deployment with Fabric by
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabricandymccurdy
34K views30 slides
Scaling Your App With Docker Swarm using Terraform, Packer on Openstack by
Scaling Your App With Docker Swarm using Terraform, Packer on OpenstackScaling Your App With Docker Swarm using Terraform, Packer on Openstack
Scaling Your App With Docker Swarm using Terraform, Packer on OpenstackBobby DeVeaux, DevOps Consultant
1.8K views64 slides
Transforming Infrastructure into Code - Importing existing cloud resources u... by
Transforming Infrastructure into Code  - Importing existing cloud resources u...Transforming Infrastructure into Code  - Importing existing cloud resources u...
Transforming Infrastructure into Code - Importing existing cloud resources u...Shih Oon Liong
2.8K views57 slides
modern module development - Ken Barber 2012 Edinburgh Puppet Camp by
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet CampPuppet
4.5K views55 slides
MNPHP Scalable Architecture 101 - Feb 3 2011 by
MNPHP Scalable Architecture 101 - Feb 3 2011MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011Mike Willbanks
1K views53 slides

What's hot(20)

Reusable, composable, battle-tested Terraform modules by Yevgeniy Brikman
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modules
Yevgeniy Brikman28.4K views
Python Deployment with Fabric by andymccurdy
Python Deployment with FabricPython Deployment with Fabric
Python Deployment with Fabric
andymccurdy34K views
Transforming Infrastructure into Code - Importing existing cloud resources u... by Shih Oon Liong
Transforming Infrastructure into Code  - Importing existing cloud resources u...Transforming Infrastructure into Code  - Importing existing cloud resources u...
Transforming Infrastructure into Code - Importing existing cloud resources u...
Shih Oon Liong2.8K views
modern module development - Ken Barber 2012 Edinburgh Puppet Camp by Puppet
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
Puppet4.5K views
MNPHP Scalable Architecture 101 - Feb 3 2011 by Mike Willbanks
MNPHP Scalable Architecture 101 - Feb 3 2011MNPHP Scalable Architecture 101 - Feb 3 2011
MNPHP Scalable Architecture 101 - Feb 3 2011
Mike Willbanks1K views
WordPress Development Environments by Ohad Raz
WordPress Development Environments WordPress Development Environments
WordPress Development Environments
Ohad Raz5.7K views
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS by Puppet
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSConfiguring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Puppet163 views
Drush in the Composer Era by Pantheon
Drush in the Composer EraDrush in the Composer Era
Drush in the Composer Era
Pantheon1.1K views
Cooking Perl with Chef: Real World Tutorial with Jitterbug by David Golden
Cooking Perl with Chef: Real World Tutorial with JitterbugCooking Perl with Chef: Real World Tutorial with Jitterbug
Cooking Perl with Chef: Real World Tutorial with Jitterbug
David Golden5.2K views
Docker for Developers - php[tek] 2017 by Chris Tankersley
Docker for Developers - php[tek] 2017Docker for Developers - php[tek] 2017
Docker for Developers - php[tek] 2017
Chris Tankersley1.1K views
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration by Erica Windisch
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
Erica Windisch2.3K views
Porting Rails Apps to High Availability Systems by Marcelo Pinheiro
Porting Rails Apps to High Availability SystemsPorting Rails Apps to High Availability Systems
Porting Rails Apps to High Availability Systems
Marcelo Pinheiro4.5K views
Deploying Windows Containers on Windows Server 2016 by Ben Hall
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
Ben Hall2.4K views
Scaling Django by Mike Malone
Scaling DjangoScaling Django
Scaling Django
Mike Malone41.8K views
Automated Java Deployments With Rpm by Martin Jackson
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With Rpm
Martin Jackson18K views
Deploying applications to Windows Server 2016 and Windows Containers by Ben Hall
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows Containers
Ben Hall1.9K views
Be a better developer with Docker (revision 3) by Nicola Paolucci
Be a better developer with Docker (revision 3)Be a better developer with Docker (revision 3)
Be a better developer with Docker (revision 3)
Nicola Paolucci1.5K views
The How and Why of Windows containers by Ben Hall
The How and Why of Windows containersThe How and Why of Windows containers
The How and Why of Windows containers
Ben Hall1.2K views

Similar to Hands on Docker - Launch your own LEMP or LAMP stack

Docker for Web Developers: A Sneak Peek by
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peekmsyukor
873 views28 slides
Docker for developers on mac and windows by
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windowsDocker, Inc.
1.7K views58 slides
Docker Introduction.pdf by
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdfOKLABS
68 views65 slides
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps by
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
875 views39 slides
Dockerize Laravel Application by
Dockerize Laravel ApplicationDockerize Laravel Application
Dockerize Laravel ApplicationAfrimadoni Dinata
1.2K views21 slides
Learning Docker with Thomas by
Learning Docker with ThomasLearning Docker with Thomas
Learning Docker with ThomasThomas Tong, FRM, PMP
424 views38 slides

Similar to Hands on Docker - Launch your own LEMP or LAMP stack(20)

Docker for Web Developers: A Sneak Peek by msyukor
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
msyukor873 views
Docker for developers on mac and windows by Docker, Inc.
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
Docker, Inc.1.7K views
Docker Introduction.pdf by OKLABS
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdf
OKLABS68 views
桃園市教育局Docker技術入門與實作 by Philip Zheng
桃園市教育局Docker技術入門與實作桃園市教育局Docker技術入門與實作
桃園市教育局Docker技術入門與實作
Philip Zheng1K views
Introduction to Docker by Luong Vo
Introduction to DockerIntroduction to Docker
Introduction to Docker
Luong Vo417 views
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond by DrupalDay
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and BeyondDrupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
Drupal Day 2012 - Automating Drupal Development: Make!les, Features and Beyond
DrupalDay924 views
DCEU 18: Developing with Docker Containers by Docker, Inc.
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
Docker, Inc.595 views
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud by Dropsolid
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDrupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Dropsolid3.5K views
Super powered Drupal development with docker by Maciej Lukianski
Super powered Drupal development with dockerSuper powered Drupal development with docker
Super powered Drupal development with docker
Maciej Lukianski362 views
Docker orchestration v4 by Hojin Kim
Docker orchestration v4Docker orchestration v4
Docker orchestration v4
Hojin Kim279 views
Docker Essentials Workshop— Innovation Labs July 2020 by CloudHero
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020
CloudHero398 views
Automating Drupal Development: Makefiles, features and beyond by Nuvole
Automating Drupal Development: Makefiles, features and beyondAutomating Drupal Development: Makefiles, features and beyond
Automating Drupal Development: Makefiles, features and beyond
Nuvole6.9K views
Lean Drupal Repositories with Composer and Drush by Pantheon
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
Pantheon1.6K views

More from Dana Luther

How to analyze your codebase with Exakat using Docker - Longhorn PHP by
How to analyze your codebase with Exakat using Docker - Longhorn PHPHow to analyze your codebase with Exakat using Docker - Longhorn PHP
How to analyze your codebase with Exakat using Docker - Longhorn PHPDana Luther
109 views78 slides
Keep it Secret, Keep it Safe - Docker Secrets and DI by
Keep it Secret, Keep it Safe - Docker Secrets and DIKeep it Secret, Keep it Safe - Docker Secrets and DI
Keep it Secret, Keep it Safe - Docker Secrets and DIDana Luther
110 views92 slides
Integrated Feature Management - Using Feature Flags - PHPSerbia by
Integrated Feature Management - Using Feature Flags - PHPSerbiaIntegrated Feature Management - Using Feature Flags - PHPSerbia
Integrated Feature Management - Using Feature Flags - PHPSerbiaDana Luther
143 views143 slides
Integrated Feature Management - Using Feature Flags - MidwestPHP by
Integrated Feature Management - Using Feature Flags - MidwestPHPIntegrated Feature Management - Using Feature Flags - MidwestPHP
Integrated Feature Management - Using Feature Flags - MidwestPHPDana Luther
311 views143 slides
Integrated Feature Management - Using Feature Flags - SunshinePHP by
Integrated Feature Management - Using Feature Flags - SunshinePHPIntegrated Feature Management - Using Feature Flags - SunshinePHP
Integrated Feature Management - Using Feature Flags - SunshinePHPDana Luther
83 views138 slides
Converting your DEV Environment to a Docker Stack - ZCOE18 by
Converting your DEV Environment to a Docker Stack - ZCOE18Converting your DEV Environment to a Docker Stack - ZCOE18
Converting your DEV Environment to a Docker Stack - ZCOE18Dana Luther
176 views44 slides

More from Dana Luther(8)

How to analyze your codebase with Exakat using Docker - Longhorn PHP by Dana Luther
How to analyze your codebase with Exakat using Docker - Longhorn PHPHow to analyze your codebase with Exakat using Docker - Longhorn PHP
How to analyze your codebase with Exakat using Docker - Longhorn PHP
Dana Luther109 views
Keep it Secret, Keep it Safe - Docker Secrets and DI by Dana Luther
Keep it Secret, Keep it Safe - Docker Secrets and DIKeep it Secret, Keep it Safe - Docker Secrets and DI
Keep it Secret, Keep it Safe - Docker Secrets and DI
Dana Luther110 views
Integrated Feature Management - Using Feature Flags - PHPSerbia by Dana Luther
Integrated Feature Management - Using Feature Flags - PHPSerbiaIntegrated Feature Management - Using Feature Flags - PHPSerbia
Integrated Feature Management - Using Feature Flags - PHPSerbia
Dana Luther143 views
Integrated Feature Management - Using Feature Flags - MidwestPHP by Dana Luther
Integrated Feature Management - Using Feature Flags - MidwestPHPIntegrated Feature Management - Using Feature Flags - MidwestPHP
Integrated Feature Management - Using Feature Flags - MidwestPHP
Dana Luther311 views
Integrated Feature Management - Using Feature Flags - SunshinePHP by Dana Luther
Integrated Feature Management - Using Feature Flags - SunshinePHPIntegrated Feature Management - Using Feature Flags - SunshinePHP
Integrated Feature Management - Using Feature Flags - SunshinePHP
Dana Luther83 views
Converting your DEV Environment to a Docker Stack - ZCOE18 by Dana Luther
Converting your DEV Environment to a Docker Stack - ZCOE18Converting your DEV Environment to a Docker Stack - ZCOE18
Converting your DEV Environment to a Docker Stack - ZCOE18
Dana Luther176 views
Converting Your DEV Environment to a Docker Stack by Dana Luther
Converting Your DEV Environment to a Docker StackConverting Your DEV Environment to a Docker Stack
Converting Your DEV Environment to a Docker Stack
Dana Luther289 views
Code Coverage for Total Security in Application Migrations by Dana Luther
Code Coverage for Total Security in Application MigrationsCode Coverage for Total Security in Application Migrations
Code Coverage for Total Security in Application Migrations
Dana Luther328 views

Recently uploaded

information by
informationinformation
informationkhelgishekhar
10 views4 slides
ATPMOUSE_융합2조.pptx by
ATPMOUSE_융합2조.pptxATPMOUSE_융합2조.pptx
ATPMOUSE_융합2조.pptxkts120898
35 views70 slides
Marketing and Community Building in Web3 by
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3Federico Ast
14 views64 slides
The Dark Web : Hidden Services by
The Dark Web : Hidden ServicesThe Dark Web : Hidden Services
The Dark Web : Hidden ServicesAnshu Singh
14 views24 slides
hamro digital logics.pptx by
hamro digital logics.pptxhamro digital logics.pptx
hamro digital logics.pptxtupeshghimire
10 views36 slides
Affiliate Marketing by
Affiliate MarketingAffiliate Marketing
Affiliate MarketingNavin Dhanuka
17 views30 slides

Recently uploaded(9)

ATPMOUSE_융합2조.pptx by kts120898
ATPMOUSE_융합2조.pptxATPMOUSE_융합2조.pptx
ATPMOUSE_융합2조.pptx
kts12089835 views
Marketing and Community Building in Web3 by Federico Ast
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3
Federico Ast14 views
The Dark Web : Hidden Services by Anshu Singh
The Dark Web : Hidden ServicesThe Dark Web : Hidden Services
The Dark Web : Hidden Services
Anshu Singh14 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC414 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat110 views
How to think like a threat actor for Kubernetes.pptx by LibbySchulze1
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptx
LibbySchulze15 views

Hands on Docker - Launch your own LEMP or LAMP stack