Ask HN: Docker for a Mac App?

4 points by gmzi ↗ HN
Hi folks, I'm building a Mac utility to extract and process data from local PDF files. I use Python for crawling PDFs and Java for processing the data. I'd like to be able to share this program with other computers (mostly Macs and a couple with Windows) that don't have Python or Java installed. I've heard Docker might be a solution, but since I've never used it before, I'd like to ask you all if Docker is the right tool for this task or if there's a better one I should consider studying. In any case, it will be my first experience with containers. All hints are very welcome, and thanks!

15 comments

[ 2.9 ms ] story [ 35.1 ms ] thread
No, Docker is not right for this, mostly because Docker does not actually run on Mac; it runs on a Linux VM. MacOS doesn't really support containers.

I would suggest looking at Homebrew.

containers on mac go through a VM

Many, many developers use Docker on Mac without issue

There is Docker Desktop and Colima you can use

There's two different things here.

Q: I need to run existing Docker containers on my Mac.

A: You have to use a VM; it's no big deal.

Q: What's the best way to package a new native Mac app?

A: Not containers.

Thank you very much, wmf, for clarifying. I am doing some research to replace the Java dependencies with Python exclusively, so I can create a .dmg installer using PyInstaller or similar tool. This appears to be a more straightforward approach
Take note, building .dmg or .exe of python apps may cause anti-viruses to panic when your users run the apps, they can add exceptions but I would recommend doing proper research into this.
Docker on Mac creates Linux VMs though and this creates really slow file system abstractions for bigger folders.
Are your users technical enough to run containers and install Docker Desktop / Colima?
Thanks verdverm, my user's aren't technical at all, they can install a .dmg file in their macs, but nothing beyond that
I don’t think you can use Docker for those users. I follow the Colima development from far by looking at their GitHub issues and releases and you don’t want to deal with such complexity with non technical users.
Python is cross-platform. Java is cross-platform.
This sounds like a horribly bloated stack. Might it be possible to compile the Python part into a lib that the Java app can access? And then package the Java app as a distributable, maybe with a JRE bundled?
Thanks solardev, I've managed to get Java out of the stack replacing it with a Python package. Still horrible but not bloated anymore :). Now I'm looking for options to package a Python app, that seems to be way easier, so many new things for me here
That's so much cleaner!

If your audience is developers (or similarly tech-savvy), that's probably enough to package it up as `brew install my_pdf_parser` for Macs (and Chocolatey for Windows) and have them take care of the Python deps.

If you're going for a mainstream desktop app though, that's a bit harder, but there's stuff like https://pyinstaller.org/en/stable/ (edit: as you already mentioned in another comment, lol)

As other comments have mentioned, this isn't what Docker is for.

For Python, you'd use something like Py2App or whatever the current thing is. And Py2Exe for Windows.

https://py2app.readthedocs.io/en/latest/

https://pypi.org/project/py2exe/

PS: I typed your question into GPT 4 verbatim and it pointed me to PyInstaller, as well.

https://pyinstaller.org/en/stable/

Thanks runjake for these resources, looking forward to dive into them as soon as I have script and dependencies ready to package