

In this blog post, I’ll describe various ways to quickly and safely clean vast amounts of storage on a Mac Book used for web development. Installing or updating an app ( ahem, ahem XCode…) on macOS is sometimes surprisingly difficult because of missing disk space. Network latency in the terminal and occasional connection glitches are nothing compared to the frustrations caused by Docker for Mac.A leading-edge performance and error monitoring tool for Ruby applications. After a few weeks of using this setup, I really don’t see any benefits of running Docker locally. If you need Docker but don’t want to give up macOS, you should definitely give it a try. My devbox doesn’t expose any services to the public (hence the port forwarding) and I have firewall, fail2ban and automated security updates enabled, but there’s still a chance I might have misconfigured something (for example, thanks to docker overwriting/erasing iptable rules by default). At one point it will make more sense to buy my own hardware. I currently pay $40/mo for a 8GB/4CPU machine on DigitalOcean. I usually have it anyway, but on a choppy wifi you’ll definitely notice you’re not using a local machine.Īnother downside is cost. I now need a decent internet connection to work. I don’t need a spec’d out laptop just to get work done because the hardware is outsourced to the cloud.

If I lose access to my MacBook, I can open up pretty much any other computer (or an iPad), SSH to my devbox and continue working. My devbox doesn’t depend on my laptop’s state: I can upgrade/restart my laptop without affecting my development machine.

I can run resource-intensive tasks and my MacBook is no longer running hot all the time, battery life is back to normal and I’ve reclaimed over 40GB of disk space. The best part about this setup is that the heavy lifting is done on someone else’s hardware. # (forwards remote ports to localhost - sudo is required for 443 forwarding) # optional (in a new iTerm tab, on the host machine): To start working, I simply run the following commands: ssh devbox The server has all my dotfiles installed, so I have access to all my aliases, command-line tools and vim config. Thanks to tmux -CC, iTerm turns SSH sessions into regular macOS terminal tabs, making the whole experience seamless. Apart from VSCode, iTerm with its amazing tmux integration plays a huge part. There are a few essential tools that make working on a remote server possible. If I ever need to scrape it and set up a new one, I run my provisioning scripts and I’m ready to go within minutes. The dev machine is a VPS, running latest Ubuntu. I initially wanted to set up an Intel NUC in my local network to reduce latency, but thanks to VSCode Remote Development, latency is not really a problem when editing, so I’d much rather not have to deal with an extra computer at home. That’s never going to change, so the best way to get the most out of Docker is to run it on the platform it was built for: Linux.Īnd that’s my solution: I now have a remote Linux development server with Docker.Ĭurrently, I’m using a droplet on DigitalOcean. Docker Will Never be Fast on the Macĭocker for Mac will always need some kind of virtualization and file sync. And ironically, the solution is to not run it on macOS.
DOCKER FOR MAC DISK PERFORMANCE SOFTWARE
While Ubuntu Desktop has improved significantly since the last time I tried it, I depend too heavily on macOS software to give it up altogether.Īfter a few attempts, I’ve found a way to make Docker work for me on macOS. Why not simply use an Ubuntu laptop instead? I’ve tried it (with a Dell XPS) and, for me, it doesn’t work. MacBook with Docker will always run hot, battery will drain in less than an hour, fan speed is high enough for the laptop to take off and I need an external SSD disk to fit all the images. But on macOS, despite every possible performance tweak, Docker had been a huge pain. Docker helps us make sure the whole stack works for everyone, every time.įor those using Linux, it works without noticeable downsides. It’s a medium-sized Rails monolith with a bunch of resource-heavy dependencies (Postgres, PostGIS, ElasticSearch, Redis, Next.js and a few more). The app I’m currently working on runs on Docker.
