Docker Captains are select members of the community that are both experts in their field and are passionate about sharing their Docker knowledge with others. “Docker Captains Take 5” is a regular blog series where we get a closer look at our Captains and ask them the same broad set of questions ranging from what their best Docker tip is to whether they prefer cats or dogs (personally, we like whales and turtles over here). Today, we’re interviewing Nick Janetakis who has been a Docker Captain since 2016. He is a freelance full stack developer / teacher and is based in New York, United States.
How/when did you first discover Docker?
I was doing freelance web development work and kept running into situations where it was painful to set up my development environment for web apps created with Ruby on Rails. Different apps had different Ruby version requirements as well as needing different PostgreSQL and Redis versions too.
I remember running a manually provisioned Linux VM on my Windows dev box and did most of my development there. I even started to use LXC directly within that Linux VM.
That wasn’t too bad after investing a lot of time to automate things but then it was always a song and dance to get everything running on my client’s machines as well as production.
In 2014 I first discovered Docker. I think it was around version 1.4 at the time. I remember reading about Docker and deciding it was stable enough to give it a shot and I’ve been using it ever since.
What is your favorite Docker command?
It’s for sure docker-compose up. It’s by far my most used command.
There’s what drew me into using Docker in the first place. It’s the promise that all I have to do is run 1 or 2 commands and my whole tech stack will be up and running on all major platforms.
Sure back in 2014 it was called fig up and perhaps in the future docker-compose up will be replaced by a native docker command, but the same concept has applied for all these years.
What is your top tip you think other people don’t know for working with Docker?
You can use the same docker-compose.yml file in development and production and still have the flexibility to run different containers in each environment by using a docker-compose.override.yml file and then ignoring it from version control.
This comes in very handy for running a local copy of PostgreSQL or a Webpack dev server in development but then in production use a managed PostgreSQL database from your cloud provider while serving your pre-compiled assets from nginx or a CDN.
What’s the coolest Docker demo you have done/seen?
The very first time I ran a docker-compose up to bring up a web server, background worker, PostgreSQL and Redis in about 5 seconds I knew things were going to be good.
This wasn’t part of a specific presentation or recorded demo. It was demonstrating to myself that Docker has legs and wasn’t just the next hyped up technology that’s going to fizzle out in 6 months.
I’m usually not interested in watching toy demos or seeing one sliver of something applied in a non-real world use case to make it look appealing. I’m all about practical examples that help me in my day-to-day. That’s why I think something as basic as seeing a fully Dockerized / production-ready web app being started up with docker-compose up is cool.
What have you worked on in the past 6 months that you’re particularly proud of?
Helping some of my freelance clients deploy their web applications in production-ready ways. It’s very satisfying to convert ideas and code into solutions that help folks do what they want to do.
I really enjoy learning new things but to me, code has always been a means to an end. The journey is fun and truly enjoyable but at the end of the day going from A to B is the goal and it always makes me happy to see others be able to fulfill their goals.
I also released 26 episodes of my Running in Production podcast.
It’s a show where a new guest comes on every week and we talk about how they built and deployed a web app they’ve created, what tech stack they used, best tips and lessons learned. As a side note, quite a lot of folks ranging from solo developers to massively popular companies are using Docker in their day-to-day.
What do you anticipate will be Docker’s biggest announcement this year?
I have no idea what’s coming but I hope layer diffing and smart layer updates becomes a thing because one of the biggest time sinks of using Docker in development is having your application’s package dependency layer get invalidated from 1 change. That would be changing something like Python’s requirements.txt file, Ruby’s Gemfile or Node’s package.json file.
Changing a dependency usually involves having to wait 5-10 minutes for all dependencies to get rebuilt but without Docker, that same process would likely finish in 10 seconds or less. If layer diffing and updates were possible that could get things down to 10 seconds with Docker too.
That would be a very welcome change to have layer diffing and smart updates. Especially in new projects where you’re changing your dependencies on a regular basis.
What do you think is going to be Docker’s biggest challenge this year?
It’s hard to say but with Docker’s new primary focus on the developer experience, I’m optimistic because over the last few years it felt like Docker was a bit scattered trying to figure out who their target customer is and how to generate revenue.
I’m happy Docker finally figured out what they want to do. I don’t mean that in a condescending way either. I know how hard it is to find your true calling and target audience.
The biggest challenge would probably be figuring out how to make Docker a sustainable business. I hope it becomes one of those things where Docker transforms from an 80% upgrade / 10% sidegrade / 10% downgrade on some things to a 100% upgrade to the point where for something like web development it becomes a no brainer to always use Docker with no compromises.
Maybe I’m living in a fantasy world but I like to think that if things ever got to that point then the business problem would solve itself through either public funding or getting bought out by a company that will let everyone continue doing what they’re doing and make the best possible developer experience conceived on planet Earth.
What are some personal goals for the next year with respect to the Docker community?
I’d like to ship my next course which focuses on deploying web applications with Docker. This has been a long time coming and I’ve written and rewritten the course twice now over the last 2 years.
On the bright side, I’ve got everything I want to include in the course all put together. It’s everything I’ve learned from building and deploying Dockerized web apps since 2014.
If anyone wants to sign up to get notified with a launch discount when it’s released you can do so at https://nickjanetakis.com/courses/deploy-to-production.
Most of the blog posts, videos and courses I create come from real-world experience so I’m also looking forward to working with more folks this year as a part of my freelance business.
What talk would you most love to see at DockerCon 2021?
If I had to pull a request out of thin air I’d like to see assorted use case demos or presentations on how developers and companies are using Docker out in the wild.
Maybe some type of collaboration video where 5-6 people spend ~10 minutes going over their setups. Perhaps even have 2 of these videos. One with larger companies and one with solo developers or small teams. This way we can see usage patterns from multiple perspectives.
Looking to the distant future, what is the technology that you’re most excited about and that you think holds a lot of promise?
If you asked me this question 6 years ago I would have said Docker.
And I’m still going with Docker today because I can see a future where there’s a zero compromise development experience that’s lightning fast with flawless code editor integration in all editors.
That would be a wonderful place to be in.
Rapid fire questions…
What new skill have you mastered during the pandemic?
I’ve never been more confident in my ability to wash my hands.
Salty, sour or sweet?
Can I pick sweet and sour?
Dogs, cats, neither, both?
Turtles all the way down.
Beach or mountains?
Probably mountains because I really like hiking and you can escape the sun. But at the same time there’s something super relaxing about seeing and hearing the ocean. Tough question!
Your most often used emoji?
👍 is what I commonly reach for on GitHub when leaving a reaction to something.