Hey there, for a very simple start there’s the compose.yaml
file at the bottom of my comment here.
This sounds like something on your end as I get cached builds every time, rootlessly even. Podman also supports cache mounts.
Check my comment history for an example of a simple bind mount compose.yaml
I use for developing a small Python project. It’s exactly the same as Docker Compose (since Podman Compose follows the Compose spec) but if you’re just getting started, it might be a good skeleton to build on.
There’s real usability benefits too. I’ve collected some anecdotes from Reddit:
Rootless podman is my first choice for using containers now, it works fantastically well in my experience. It’s so much nicer to have all my container related stuff like volumes, configs, the control socket, etc. in my home directory and standard user paths vs. scattered all over the system. Permission issues with bind mounts just totally disappear when you go rootless. It’s so much easier and better than the root privileged daemon.
and,
If you are on Linux, there is the fantastic podman option “–userns keep-id” which will make sure the uid inside+the container is the same as your current user uid.+
and,
Yeah in my experience with rootless you don’t need to worry about UID shenanigans anymore. Containers can do stuff as root (from their perspective at least) all they want but any files you bind mount into the container are still just owned/modified by your user account on the host system (not a root user bleeding through from the container).
finally,
The permissions (rwx) don’t change, but the uid/gid is mapped. E.g. uid 0 is the running user outside the container, by uid 1 will be mapped to 100000 (configurable), and say 5000 inside the container is mapped to 105000. I don’t remember the exact mapping but it works roughly like that.
For something simple that just needs a bind mount like
services:
app:
build:
context: .
target: base
volumes:
- ./debaser_studio:/opt/app-root/src/debaser_studio/debaser_studio
ports:
- "3000:3000"
- "8000:8000"
user: default
I haven’t found any issues. Do you have more complex needs?
I use Logseq for everything. I’ve found the more you throw into it the more useful it becomes since your touch points are so frequent and that gets you thinking through and exploring your graph more. I’ve yet to use any of the data query features but I’ve heard they’re incredibly powerful.
Whiteboards are just a fantastic way for modeling a topic or themes you know you want to turn into a deliverable when the how is uncertain.
Now that I’ve finished the first draft of an article on setting up rootless Podman on Guix System, I’m using and building out a set of tools to support a new article covering an all Red Hat stack from inner loop to CI.
So far, it’s
Some folks may not know this but Logseq has a built-in whiteboard feature too that’s also FOSS. I use it all the time to mind-map new blogposts and newsletters.
In Logseq the starting page is always the journal page for the day. This allows you to build up content without worrying about where it should go. Once you have something you feel you can run with, then you can move it to its own page.
EDIT: more features enabled by Logseq’s block-based (bullets) architecture over on Mastodon.
Logseq is block-based. Each bullet is a block. This is very powerful because it allows you to interlink concepts, ideas, at the level of the block vs page.
It should be harder to support Docker, which hasn’t released a new open source product since before Docker Desktop, which is also proprietary. Podman Desktop? OSS. It’d be hard to name a product Red Hat supports that isn’t OSS.
For what it’s worth, I just wrote up a compose.yaml
file as I’d write it for Docker Compose and it just worked. See the bottom of my comment on this GitHub issue for an example. I think the team’s intention is for it to transparently support whatever you’d write for a standard Compose file but of course we don’t have things like the brand new Docker watch
. They do point to the Compose spec in the Podman Compose README. Bind mounts are good enough for me, thus far.
I’d say Racket is the most different of any Scheme I know but it’s not hard to get started if you know one or the other. Racket (in my opinion) has more niceties around the development experience than Guile and a pretty dang good IDE if you ask me.
My employer, garden.io, offers pipelines you can run anywhere: in GitHub Actions, GitLab CI, locally, wherever! We capture all your dependencies in a dependency graph, then cache all your inputs: builds, tests, run scripts. We’re open source at https://github.com/garden-io/garden
Racket but I’ll take Guile Scheme as a close second. Then Hy, a lisp dialect of Python. I’m writing a blog written in a DSL of Racket right now, Pollen, that makes authoring a joyful experience. Hy gives me access to the entire Python ecosystem plus access to things like macros. Guile Scheme is the configuration language of the Linux distribution, Guix System. Guile’s G-Expressions are so powerful for writing packages.
Hey there! And thank you for reading.
Let’s take your example, as a Nomad cluster operator. The Acme Corporation may have a team for provisioning and maintaining this Nomad cluster. The organization wants to give customers the option for self-service. As a Nomad cluster operator on the Nomad team, because you are empowered with agency and visibility, you get to think of creative solutions to the problem of self-service. The billing team? They’re doing that too. And your two teams may collaborate. But the onus is on you to be creative and work within your skillset to best deliver.
Maybe you decide to go sit with the billing team for a week to understand the provisioning flow from the moment a customer presses pay to the automatic creation of a new Nomad cluster. Because you are empowered, you act. You’re happier because you don’t have to go through seven layers of command to be effective.
Does that help?