Build replicable environments @ Docker Paris

1,546 views

Published on

Feedback talk about our experience @mention (https://mention.com) with Docker to build and deploy replicable environments

Published in: Technology
3 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total views
1,546
On SlideShare
0
From Embeds
0
Number of Embeds
64
Actions
Shares
0
Downloads
11
Comments
3
Likes
3
Embeds 0
No embeds

No notes for slide
  • Introduce mention
  • Docker also references shoes! (Discovered through mention)
  • Fast growing team:
    3 to 12 in one year half
    1st US employee just hired (see http://www.slideshare.net/Clementdelangue/how-we-hired-our-first-us-employee-in-two-weeks)
    Structure dev workflow: more testing, new environments, etc
    Work from different workstations, setup workstations in minutes.
  • Mention technical stack
  • Environments have to run everywhere, from workstations to data-center.
  • Vagrant’s snapshots not easy to distribute
    Things are moving fast: Vagrant just announced Vagrant Cloud (see http://www.vagrantup.com/blog/vagrant-1-5-and-vagrant-cloud.html)
    Why not Docker, designed for that? No overheard on servers, “natively” run on Mac (with Boot2Docker https://github.com/boot2docker/boot2docker)
  • Vagrant as a VM manager, Docker to deploy the app!
  • Ready to put our app in a container! 2 native ways to achieve that:
    - Interactive mode
    Interactive
    Easy to start
    Flexible
    Non-extensible
    “Black-box”, what’s really inside?
    Package => commit => not repeatable
    - Docker files
    Explicit manifest of what’s inside the container
    Repeatable build
    Extensible
    Harder to maintain
    Slow to build for test purpose
    Provisioning tool (Puppet, Chef): to explore!
  • For the moment, mainly for ease of testing and deployment, we decided to build only one container container embedding the full stack.
    If you consider Docker in production, build several containers each for one part, looks like a good strategy since it will let you move containers to another machine.
    How-to orchestrate them ? Currently doing with bash scripts. Look at Fig (http://orchardup.github.io/fig/)
  • Data-containers (docker’s volumes)
    common pattern while building container. They are basically containers which do nothing more than mounting and sharing a volume to other containers.
  • Run a container named db_data based on tianon/true image which mounts /var/lib/mysql
  • Run a container using volumes from db_data container, here /var/lib/mysql.
    Now I can kill this container, no data lost.
  • Multiple running containers
    CI (Jenkins)
    Local dev env
    Integration server (don’t need Vagrant, no overhead)
    Run the same, EVERYWHERE
    Lot of room for improvement
    Private index to publish images
    Improve Sharing folders performance
    solved with Vagrant 1.5 rsync? iNotify, still in progress
    NFS share from guest to host
    Maintain container Dockerfile
    Go to production ?
    Still at the early stage
    Tools to speed-up / facilitate deployment
    Fig (http://orchardup.github.io/fig/)
    Flynn (https://flynn.io/)
    Dokku (https://github.com/progrium/dokku)
    Fast growing community: https://docs.google.com/presentation/d/1P6y6WdgZwfrG5dZELTgtAPbOUNoPiKy4ib2mquRScTI/edit#slide=id.p
  • Track Docker’s news with mention
    Happy to discuss about your XP!
  • Build replicable environments @ Docker Paris

    1. 1. Build replicable environments
    2. 2. @arnaud_breton Full-stack developer
    3. 3. Easily monitor the (social) web with mention
    4. 4. Context ● Fast growing team ● Structure development workflow ● Half a day to set up a new environment
    5. 5. OR ?
    6. 6. AND !
    7. 7. One container to rule them all? 
 full-stack container vs one container per stack
    8. 8. Data containers (Docker’s volumes)
    9. 9. docker run -d -v /var/lib/mysql -name db_data tianon/true
    10. 10. docker run -d --volumes-from db_data mention/awesome-app
    11. 11. Where are we? ● Multiple running containers (CI, local, staging) ● One hour to deploy (80% improvement!) ● Yet even more room to improve ● Still at an early stage
    12. 12. http://bit.ly/mention-docker

    ×