SlideShare a Scribd company logo
1 of 41
Download to read offline
DOCKER FOR POLYGLOTS
Nathan LeClaire, Open Source Engineer at Docker Inc.
WELCOME
• I appreciate your participation ! To speak at this
conference is an honor.
• Today we are going to talk about "Docker For
Polyglots".
• A "polyglot" is someone who speaks multiple
languages.
THANKYOU FOR
CONFERENCE
WHO AM I?
Nathan LeClaire (@upthecyberpunks)
Open Source Engineer, Docker Machine
I ❤ JAPAN
TOOLS OF MASSIVE
INNOVATION
TOOLS OF MASSIVE
INNOVATION
LET'S LOOK AT SOME FACTS
FACT:
VARIETY
• Developers want to use a variety of programming
languages
• "The right tool for the right job"
• This complicates the process of setting up
development environments and running operations
FACT:
TECHNOLOGY CHANGES RAPIDLY
• Front end web development alone has a huge
explosion of options including SASS, Grunt,
Yeoman, etc.
• Not every developer on your team is going to be
an expert in tooling for every language but they
still might want to contribute
• More friction == less productivity
FACT:
TOOLING IS DIFFICULT
• For instance, Maven might be intimidating to a Go
developer.
• Python programmers might want to use Ruby
sometimes but don't know how to use rbenv or
rvm
• Contributing to open source is very difficult for this
reason.
FACT:
"BUS FACTOR" RISK IS HIGH
• If "the person who sets up the environments" on
your team was hit by a bus tomorrow, would it be
easy or hard to keep going?
• Can any person on your team destroy their
development environment and re-build it from
scratch automatically?
FACT: DEPENDENCY HELL
Does this type of thing look familiar?
DOCKER CAN HELP
• Docker provides a way of distributing applications
• It also provides orchestration tools for developing
them
• End game is to reduce friction to the point where
transitioning between projects is seamless
MY DREAM:
SIMPLICITY
MY DREAM:
UNIFORMITY
MY DREAM:
PHOENIX DEVELOPMENT
WHAT IS A POLYGLOT?
"PROGRAMMING LANGUAGE"
WHAT IS A POLYGLOT?
"TOOLING LANGUAGE"
WHAT IS A POLYGLOT?
"DEVELOPER LANGUAGE"
"We need to add some migrations
to run for the database, a few
controllers, and also some jobs to
run in the background queue."
WHAT IS A POLYGLOT?
"OPERATOR LANGUAGE"
"Let's set up some automation
around our load balancers, store
these files in an S3 bucket and
consider moving to a cross-cloud
solution with overlay networking."
DOCKER LETS YOU DEFINE
AN ENVIRONMENT SIMPLY
EXAMPLE
I DON'T KNOW ANYTHING
ABOUT LUA...
...AND ONLY A LITTLE
ABOUT NGINX.
SETTING UP OPENRESTY
MANUALLY
$ sudo apt-get install -y make build-essential libreadline-dev libncurses5-dev
libpcre3-dev libssl-dev perl make build-essential
$ # Go to browser, click around on "Download Page"
$ wget https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz
$ tar xvf ngx_openresty-1.9.3.1.tar.gz
$ cd ngx_openresty-1.9.3.1
$ ./configure; make; make install
FORTUNATELYTHAT PROJECT
HAS GOOD DOCUMENTATION,
BUT WHAT IF IT DIDN'T?
WHAT IFYOU WANTTO INSTALL AUTOMATICALLY
ON ANOTHER COMPUTER?
OR EASILY SHAREYOUR APPLICATION WITH A
FRIEND OR COLLEAGUE?
REPLACE MANUAL METHOD
WITH ATINY BASH SCRIPT?
"YEAH, I KNOWYOU DEVELOP ON
DEBIAN, BUTTHIS NEEDSTO RUN ON
RHEL."
DEVELOPER
Installing software is
boring! I just want to
script nginx with Lua!
SOLUTION
WE CAN MAKE DOCKERFILE.
IT WILL RUN ON ANY OS WITH
COMPATIBLE KERNEL.
from debian:jessie
run apt-get update
run apt-get install -y 
libreadline-dev 
libncurses5-dev 
libpcre3-dev 
libssl-dev 
perl 
wget 
make 
build-essential
run mkdir -p /openresty
workdir /openresty
env OPENRESTY_VERSION 1.7.10.2
run wget http://openresty.org/download/ngx_openresty-${OPENRESTY_VERSION}.tar.gz
run tar xzvf ngx_openresty-${OPENRESTY_VERSION}.tar.gz
run cd ngx_openresty-${OPENRESTY_VERSION}/ && 
./configure && 
make && 
make install
env PATH /usr/local/openresty/nginx/sbin:$PATH
add https://get.docker.com/builds/Linux/x86_64/docker-latest /docker
run chmod +x /docker
add . /app
workdir /app
entrypoint ["./entrypoint.sh"]
BUILD, SHIP, & RUN
$ docker build -t nathanleclaire/openresty .
$ docker push nathanleclaire/openresty
$ # Now we can pull from anywhere!
$ # On another computer...
$ docker run -d -P nathanleclaire/openresty
YOU CAN USE AUTOMATED BUILDS ON
DOCKER HUBTO LEARN FROM OTHER
PEOPLE
LOTS OF CONTRIBUTION TO
DOCKER BECAUSE OF DOCKER
DOCKER MACHINE
DOCKER COMPOSE
DOCKER SWARM

More Related Content

What's hot

Tyrion Cannister Neural Styles by Dora Korpar and Siphan Bou
Tyrion Cannister Neural Styles by Dora Korpar and Siphan BouTyrion Cannister Neural Styles by Dora Korpar and Siphan Bou
Tyrion Cannister Neural Styles by Dora Korpar and Siphan BouDocker, Inc.
 
How to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) CommunityHow to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) CommunityMathias Renner
 
DevOps Cardiff - Puppet vs Chef vs Ansible
DevOps Cardiff - Puppet vs Chef vs AnsibleDevOps Cardiff - Puppet vs Chef vs Ansible
DevOps Cardiff - Puppet vs Chef vs AnsibleMark Phillips
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerJames Turnbull
 
Why is Open Source so Good: Thirty Years of Lessons Learned
Why is Open Source so Good: Thirty Years of Lessons LearnedWhy is Open Source so Good: Thirty Years of Lessons Learned
Why is Open Source so Good: Thirty Years of Lessons LearnedMark Atwood
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerJames Turnbull
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSRoss Kukulinski
 
Puppet - Configuration Management Tool
Puppet - Configuration Management ToolPuppet - Configuration Management Tool
Puppet - Configuration Management ToolAswin Barath
 
Orchestrating Docker - Making the Whale Dance
Orchestrating Docker - Making the Whale DanceOrchestrating Docker - Making the Whale Dance
Orchestrating Docker - Making the Whale DanceJames Turnbull
 
Portainer dublin 11_2017
Portainer dublin 11_2017Portainer dublin 11_2017
Portainer dublin 11_2017Anthony Lapenna
 
Hacking Docker the Easy way
Hacking Docker the Easy wayHacking Docker the Easy way
Hacking Docker the Easy wayBorg Han
 
DevRomagna / Golang Intro
DevRomagna / Golang IntroDevRomagna / Golang Intro
DevRomagna / Golang IntroSimone Gentili
 
OpenShift Origin Community Day (Boston) Welcome & Resources by Diane Mueller
OpenShift Origin Community Day (Boston) Welcome & Resources by Diane MuellerOpenShift Origin Community Day (Boston) Welcome & Resources by Diane Mueller
OpenShift Origin Community Day (Boston) Welcome & Resources by Diane MuellerDiane Mueller
 
Dockerize the World
Dockerize the WorldDockerize the World
Dockerize the Worlddamovsky
 
vBrownBag DevOps Series: Puppetinabox
vBrownBag DevOps Series: PuppetinaboxvBrownBag DevOps Series: Puppetinabox
vBrownBag DevOps Series: PuppetinaboxRobert Nelson
 
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java applicationOSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java applicationNicolas Fränkel
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2Derek Jacoby
 
D-DAY 2015 Continuous delivery GITHUB
D-DAY 2015 Continuous delivery  GITHUBD-DAY 2015 Continuous delivery  GITHUB
D-DAY 2015 Continuous delivery GITHUBDEVOPS D-DAY
 

What's hot (20)

Tyrion Cannister Neural Styles by Dora Korpar and Siphan Bou
Tyrion Cannister Neural Styles by Dora Korpar and Siphan BouTyrion Cannister Neural Styles by Dora Korpar and Siphan Bou
Tyrion Cannister Neural Styles by Dora Korpar and Siphan Bou
 
How to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) CommunityHow to Successfully Build a Local (Docker) Community
How to Successfully Build a Local (Docker) Community
 
DevOps Cardiff - Puppet vs Chef vs Ansible
DevOps Cardiff - Puppet vs Chef vs AnsibleDevOps Cardiff - Puppet vs Chef vs Ansible
DevOps Cardiff - Puppet vs Chef vs Ansible
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Why is Open Source so Good: Thirty Years of Lessons Learned
Why is Open Source so Good: Thirty Years of Lessons LearnedWhy is Open Source so Good: Thirty Years of Lessons Learned
Why is Open Source so Good: Thirty Years of Lessons Learned
 
Docker management
Docker managementDocker management
Docker management
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Shipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOSShipping NodeJS with Docker and CoreOS
Shipping NodeJS with Docker and CoreOS
 
Puppet - Configuration Management Tool
Puppet - Configuration Management ToolPuppet - Configuration Management Tool
Puppet - Configuration Management Tool
 
Orchestrating Docker - Making the Whale Dance
Orchestrating Docker - Making the Whale DanceOrchestrating Docker - Making the Whale Dance
Orchestrating Docker - Making the Whale Dance
 
Portainer dublin 11_2017
Portainer dublin 11_2017Portainer dublin 11_2017
Portainer dublin 11_2017
 
Running AWS Locally
Running AWS LocallyRunning AWS Locally
Running AWS Locally
 
Hacking Docker the Easy way
Hacking Docker the Easy wayHacking Docker the Easy way
Hacking Docker the Easy way
 
DevRomagna / Golang Intro
DevRomagna / Golang IntroDevRomagna / Golang Intro
DevRomagna / Golang Intro
 
OpenShift Origin Community Day (Boston) Welcome & Resources by Diane Mueller
OpenShift Origin Community Day (Boston) Welcome & Resources by Diane MuellerOpenShift Origin Community Day (Boston) Welcome & Resources by Diane Mueller
OpenShift Origin Community Day (Boston) Welcome & Resources by Diane Mueller
 
Dockerize the World
Dockerize the WorldDockerize the World
Dockerize the World
 
vBrownBag DevOps Series: Puppetinabox
vBrownBag DevOps Series: PuppetinaboxvBrownBag DevOps Series: Puppetinabox
vBrownBag DevOps Series: Puppetinabox
 
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java applicationOSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
OSCONF Jaipur - A Hitchhiker's Tour to Containerizing a Java application
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
 
D-DAY 2015 Continuous delivery GITHUB
D-DAY 2015 Continuous delivery  GITHUBD-DAY 2015 Continuous delivery  GITHUB
D-DAY 2015 Continuous delivery GITHUB
 

Similar to "Docker For Polyglots" - Nathan LeClaire - YAPC::Asia 2015

How to build an HA container orchestrator infrastructure for production – Giu...
How to build an HA container orchestrator infrastructure for production – Giu...How to build an HA container orchestrator infrastructure for production – Giu...
How to build an HA container orchestrator infrastructure for production – Giu...Codemotion
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Railselliando dias
 
What we talk about when we talk about DevOps
What we talk about when we talk about DevOpsWhat we talk about when we talk about DevOps
What we talk about when we talk about DevOpsRicard Clau
 
Going Production with Docker and Swarm
Going Production with Docker and SwarmGoing Production with Docker and Swarm
Going Production with Docker and SwarmC4Media
 
DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1Docker, Inc.
 
Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016Robert 'Bob' Reyes
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
 
The Self-Service Developer - GOTOCon CPH
The Self-Service Developer - GOTOCon CPHThe Self-Service Developer - GOTOCon CPH
The Self-Service Developer - GOTOCon CPHLaszlo Fogas
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes vty
 
8 good reasons to learn docker
8 good reasons to learn docker8 good reasons to learn docker
8 good reasons to learn dockerprabhasathya
 
DevOps The Cultural revolution
DevOps The Cultural revolutionDevOps The Cultural revolution
DevOps The Cultural revolutionSomenath Ghosh
 
FEI Bratislava 2017 - Docker
FEI Bratislava 2017 - DockerFEI Bratislava 2017 - Docker
FEI Bratislava 2017 - DockerAdam Štipák
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerAdam Štipák
 

Similar to "Docker For Polyglots" - Nathan LeClaire - YAPC::Asia 2015 (20)

Stackato v5
Stackato v5Stackato v5
Stackato v5
 
Docker for dev
Docker for devDocker for dev
Docker for dev
 
How to build an HA container orchestrator infrastructure for production – Giu...
How to build an HA container orchestrator infrastructure for production – Giu...How to build an HA container orchestrator infrastructure for production – Giu...
How to build an HA container orchestrator infrastructure for production – Giu...
 
Stackato v6
Stackato v6Stackato v6
Stackato v6
 
Stackato
StackatoStackato
Stackato
 
DevOps tools for winning agility
DevOps tools for winning agilityDevOps tools for winning agility
DevOps tools for winning agility
 
RubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on RailsRubyStack: the easiest way to deploy Ruby on Rails
RubyStack: the easiest way to deploy Ruby on Rails
 
What is octohost?
What is octohost?What is octohost?
What is octohost?
 
What we talk about when we talk about DevOps
What we talk about when we talk about DevOpsWhat we talk about when we talk about DevOps
What we talk about when we talk about DevOps
 
Going Production with Docker and Swarm
Going Production with Docker and SwarmGoing Production with Docker and Swarm
Going Production with Docker and Swarm
 
DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1
 
Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016Mozilla + Rust at PCU Manila 02 DEC 2016
Mozilla + Rust at PCU Manila 02 DEC 2016
 
Stackato v3
Stackato v3Stackato v3
Stackato v3
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
The Self-Service Developer - GOTOCon CPH
The Self-Service Developer - GOTOCon CPHThe Self-Service Developer - GOTOCon CPH
The Self-Service Developer - GOTOCon CPH
 
The world of Docker and Kubernetes
The world of Docker and Kubernetes The world of Docker and Kubernetes
The world of Docker and Kubernetes
 
8 good reasons to learn docker
8 good reasons to learn docker8 good reasons to learn docker
8 good reasons to learn docker
 
DevOps The Cultural revolution
DevOps The Cultural revolutionDevOps The Cultural revolution
DevOps The Cultural revolution
 
FEI Bratislava 2017 - Docker
FEI Bratislava 2017 - DockerFEI Bratislava 2017 - Docker
FEI Bratislava 2017 - Docker
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 

Recently uploaded

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 

Recently uploaded (20)

Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 

"Docker For Polyglots" - Nathan LeClaire - YAPC::Asia 2015

  • 1. DOCKER FOR POLYGLOTS Nathan LeClaire, Open Source Engineer at Docker Inc.
  • 2. WELCOME • I appreciate your participation ! To speak at this conference is an honor. • Today we are going to talk about "Docker For Polyglots". • A "polyglot" is someone who speaks multiple languages.
  • 4. WHO AM I? Nathan LeClaire (@upthecyberpunks) Open Source Engineer, Docker Machine
  • 8. LET'S LOOK AT SOME FACTS
  • 9. FACT: VARIETY • Developers want to use a variety of programming languages • "The right tool for the right job" • This complicates the process of setting up development environments and running operations
  • 10. FACT: TECHNOLOGY CHANGES RAPIDLY • Front end web development alone has a huge explosion of options including SASS, Grunt, Yeoman, etc. • Not every developer on your team is going to be an expert in tooling for every language but they still might want to contribute • More friction == less productivity
  • 11. FACT: TOOLING IS DIFFICULT • For instance, Maven might be intimidating to a Go developer. • Python programmers might want to use Ruby sometimes but don't know how to use rbenv or rvm • Contributing to open source is very difficult for this reason.
  • 12. FACT: "BUS FACTOR" RISK IS HIGH • If "the person who sets up the environments" on your team was hit by a bus tomorrow, would it be easy or hard to keep going? • Can any person on your team destroy their development environment and re-build it from scratch automatically?
  • 13. FACT: DEPENDENCY HELL Does this type of thing look familiar?
  • 14. DOCKER CAN HELP • Docker provides a way of distributing applications • It also provides orchestration tools for developing them • End game is to reduce friction to the point where transitioning between projects is seamless
  • 15.
  • 16.
  • 17.
  • 21. WHAT IS A POLYGLOT? "PROGRAMMING LANGUAGE"
  • 22. WHAT IS A POLYGLOT? "TOOLING LANGUAGE"
  • 23. WHAT IS A POLYGLOT? "DEVELOPER LANGUAGE" "We need to add some migrations to run for the database, a few controllers, and also some jobs to run in the background queue."
  • 24. WHAT IS A POLYGLOT? "OPERATOR LANGUAGE" "Let's set up some automation around our load balancers, store these files in an S3 bucket and consider moving to a cross-cloud solution with overlay networking."
  • 25. DOCKER LETS YOU DEFINE AN ENVIRONMENT SIMPLY
  • 27. I DON'T KNOW ANYTHING ABOUT LUA... ...AND ONLY A LITTLE ABOUT NGINX.
  • 28. SETTING UP OPENRESTY MANUALLY $ sudo apt-get install -y make build-essential libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make build-essential $ # Go to browser, click around on "Download Page" $ wget https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz $ tar xvf ngx_openresty-1.9.3.1.tar.gz $ cd ngx_openresty-1.9.3.1 $ ./configure; make; make install
  • 29. FORTUNATELYTHAT PROJECT HAS GOOD DOCUMENTATION, BUT WHAT IF IT DIDN'T?
  • 30. WHAT IFYOU WANTTO INSTALL AUTOMATICALLY ON ANOTHER COMPUTER? OR EASILY SHAREYOUR APPLICATION WITH A FRIEND OR COLLEAGUE?
  • 31. REPLACE MANUAL METHOD WITH ATINY BASH SCRIPT?
  • 32. "YEAH, I KNOWYOU DEVELOP ON DEBIAN, BUTTHIS NEEDSTO RUN ON RHEL."
  • 33. DEVELOPER Installing software is boring! I just want to script nginx with Lua!
  • 35. WE CAN MAKE DOCKERFILE. IT WILL RUN ON ANY OS WITH COMPATIBLE KERNEL. from debian:jessie run apt-get update run apt-get install -y libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl wget make build-essential run mkdir -p /openresty workdir /openresty env OPENRESTY_VERSION 1.7.10.2 run wget http://openresty.org/download/ngx_openresty-${OPENRESTY_VERSION}.tar.gz run tar xzvf ngx_openresty-${OPENRESTY_VERSION}.tar.gz run cd ngx_openresty-${OPENRESTY_VERSION}/ && ./configure && make && make install env PATH /usr/local/openresty/nginx/sbin:$PATH add https://get.docker.com/builds/Linux/x86_64/docker-latest /docker run chmod +x /docker add . /app workdir /app entrypoint ["./entrypoint.sh"]
  • 36. BUILD, SHIP, & RUN $ docker build -t nathanleclaire/openresty . $ docker push nathanleclaire/openresty $ # Now we can pull from anywhere! $ # On another computer... $ docker run -d -P nathanleclaire/openresty
  • 37. YOU CAN USE AUTOMATED BUILDS ON DOCKER HUBTO LEARN FROM OTHER PEOPLE
  • 38. LOTS OF CONTRIBUTION TO DOCKER BECAUSE OF DOCKER