Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Don't Cry When Your Dev Dependencies Die

Don't Cry When Your Dev Dependencies Die

You're supposed to treat your servers like cattle, not pets. But what about your local dependencies? With Takeout, you can spin your instances of MySQL, PostgreSQL, Redis, Memcached, and more up and down without a care. Pairs perfectly with Valet.

Matt Stauffer

August 26, 2020
Tweet

More Decks by Matt Stauffer

Other Decks in Technology

Transcript

  1. BLOCKCHAIN
    Crypto
    A red flare silhouetted the jagged
    @stauffermatt @josecanhelp
    Don’t Cry When Your Dev
    Dependencies Die

    View Slide

  2. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Let’s talk local development.

    View Slide

  3. Tools we use daily
    • Some are super visible, like our IDE, or our database management tool
    • Some less so, like our shell, or our OS
    • Some, if effective, are nearly invisible; e.g. our local hosting environment

    View Slide

  4. Today’s topic

    View Slide

  5. How do we know which is the best?
    0
    25
    50
    75
    100
    Ease of use Ease of modification Resource usage Production Parity
    Docker Homestead Valet

    View Slide

  6. Common Laravel local environments
    Full Docker
    (Vessel,
    Laradock, etc.)
    Homestead/
    Vagrant
    Valet +
    Homebrew
    DNS/serving/nginx
    PHP, core deps
    MySQL, Redis, etc.
    Packaged
    with Valet
    Managed
    by Valet
    Managed
    by you

    View Slide

  7. Common Laravel local environments
    Full Docker
    (Vessel,
    Laradock, etc.)
    Homestead/
    Vagrant
    DNS/serving/nginx
    PHP, core deps
    MySQL, Redis, etc.
    Packaged
    with Valet
    Valet + Docker
    (Jose-style)
    Packaged
    with Valet
    Managed
    by Valet
    Managed
    by you
    Managed
    by Valet
    Valet +
    Homebrew

    View Slide

  8. Jose Soto
    • Very Helpful Human
    • AKA Gaston
    • Docker enthusiast

    View Slide

  9. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Laravel Valet

    View Slide

  10. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Laravel Valet

    View Slide

  11. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Other Dependencies

    View Slide

  12. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Install Locally

    View Slide

  13. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Failure

    View Slide

  14. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Valuable Time

    View Slide

  15. Troubleshooting
    • Modify obscure files
    • Run uncertain commands
    • Backup and Reformat

    View Slide

  16. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Server Admin

    View Slide

  17. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp

    View Slide

  18. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Not an Intro to Docker Talk

    View Slide

  19. What is Docker?
    • Set of Products
    • Virtualization
    • Delivers Software
    • Containers

    View Slide

  20. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Parity

    View Slide

  21. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  22. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  23. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  24. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  25. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  26. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  27. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  28. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  29. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Dockerized
    Laravel

    View Slide

  30. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    “Local” MySQL

    View Slide

  31. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Shared MySQL

    View Slide

  32. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Demo

    View Slide

  33. Why Docker?
    • Clean Machine
    • Multiple versions
    • Difficult to Install Software

    View Slide

  34. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Matt’s Docker Story

    View Slide

  35. View Slide

  36. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Story time: MySQL tanking

    View Slide

  37. BLOCKCHAIN
    Crypto
    A red flare silhouetted the jagged
    Homebrew Hell is real.
    Valet won’t save you here.


    View Slide

  38. Cattle not pets
    http://cloudscaling.com/blog/cloud-computing/the-history-of-pets-vs-cattle/

    View Slide

  39. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Jose saved the day
    $ docker run -d —p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=password \
    -v mysql_data:/var/lib/mysql \
    library/mysql:latest

    View Slide

  40. Not everyone
    has a Jose.

    View Slide

  41. View Slide

  42. View Slide

  43. EVERYONE GETS A JOSE!

    View Slide

  44. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Introducing: Takeout

    View Slide

  45. What is it?
    A macOS tool for installing & managing
    development environment dependencies
    using Docker.

    View Slide

  46. Side notes
    • macOS-only—for now—but we ❤ Linux & Windows!
    • Takeout ❤ Valet
    • Valet :: PHP/Nginx/etc.
    Takeout :: MySQL/Redis/etc.

    View Slide

  47. What isn’t it?
    • Complicated
    • Competition to Vessel, Laradock, Homestead, or Valet

    View Slide

  48. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Demo time!

    View Slide

  49. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Set the stage

    View Slide

  50. 1. Install Docker
    2. Install Takeout
    3. Use Takeout
    4. […]
    5. Profit
    Installing Takeout

    View Slide

  51. 1. Install Docker

    View Slide

  52. 2. Install Takeout
    $ composer global require tightenco/takeout

    View Slide

  53. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Using Takeout
    $ takeout enable

    View Slide

  54. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Using Takeout
    $ takeout list

    View Slide

  55. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Using Takeout
    $ takeout disable

    View Slide

  56. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    Advanced Demo

    View Slide

  57. DON’T CRY WHEN YOUR DEV DEPENDENCIES DIE
    @stauffermatt @josecanhelp
    What do we want from you?

    View Slide

  58. What do we want from you?
    • Try it out!
    • Share your thoughts with us
    • Contribute (for Linux, for Windows, GUI, etc.):
    github.com/tightenco/takeout
    • Check out Jose's YouTube to learn more:
    youtube.josecanhelp.com

    View Slide