5 ms·
Ask HN: Docker for a Mac App?
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!
- wmf 3y agoNo, 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.
- verdverm 3y agocontainers on mac go through a VM Many, many developers use Docker on Mac without issue There is Docker Desktop and Colima you can use
- wmf 3y agoThere'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.
- gmzi 3y agoThank 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
- seanthemon 3y agoTake 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.
- solardev 3y agoDocker on Mac creates Linux VMs though and this creates really slow file system abstractions for bigger folders.
- verdverm 3y agoAre your users technical enough to run containers and install Docker Desktop / Colima?
- gmzi 3y agoThanks verdverm, my user's aren't technical at all, they can install a .dmg file in their macs, but nothing beyond that
- speedgoose 3y agoI 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.
- yuppie_scum 3y agoPython is cross-platform. Java is cross-platform.
- solardev 3y agoThis 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?
- gmzi 3y agoThanks 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
- solardev 3y agoThat'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/ https://pyinstaller.org/en/stable/ (edit: as you already mentioned in another comment, lol)
- runjake 3y agoAs 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://py2app.readthedocs.io/en/latest/ https://pypi.org/project/py2exe/ 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/ https://pyinstaller.org/en/stable/
- gmzi 3y agoThanks runjake for these resources, looking forward to dive into them as soon as I have script and dependencies ready to package