<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ovyerus&apos; posts</title><description>A stream of my consciousness shouted into the ether. Sometimes big posts, sometimes small posts. Depends on how I&apos;m feeling when I write whatever.</description><link>https://ovyerus.com</link><item><title>My iOS Shortcut for Obsidian quick capture</title><link>https://ovyerus.com/posts/obsidian-ios-shortcut</link><guid isPermaLink="true">https://ovyerus.com/posts/obsidian-ios-shortcut</guid><description>How I revamped my note-taking in Obsidian with a custom iOS Shortcut, making capturing thoughts quick and effortless.</description><pubDate>Fri, 24 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;abbr&gt;TL;DR&lt;/abbr&gt;: Install the
&lt;a href=&quot;https://github.com/czottmann/obsidian-actions-uri&quot;&gt;Actions URI&lt;/a&gt; extension into
your Obsidian vault, and add this Shortcut:
https://www.icloud.com/shortcuts/7ae0a2589764489cb3cdbc8fe22d9888&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;I&apos;ve been ~~trying to use~~ using &lt;a href=&quot;https://obsidian.md/&quot;&gt;Obsidian&lt;/a&gt; since the
start of the year for storing notes and various pieces of writing, but more
recently I&apos;ve trying to change up how I use it, turning it into more of a proper
second brain. To help with this, I stumbled upon the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Zettelkasten&quot;&gt;Zettelkasten&lt;/a&gt; method of taking
notes, which involves taking “fleeting notes” for ideas as they come, and then
revisiting them later in the day or week to flesh out into proper “atomic” (or
“permanent”) notes if it&apos;s worthy.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For further reading on Zettelkasten, I highly recommend
&lt;a href=&quot;https://obsidian.rocks/getting-started-with-zettelkasten-in-obsidian/&quot;&gt;this article&lt;/a&gt;
on obsidian.rocks, which really helped me to understand the concept and
actually applying it inside of Obsidian.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However, in the land of mobile where everything is gesture based, and we don&apos;t
have the luxury of superfast keyboard shortcuts, it can often be a bit
troublesome trying to capture our thoughts. Opening the Obsidian app is usually
fine enough, however by default it doesn&apos;t open right into a new note, so it&apos;s a
few extra steps to get to writing.&lt;/p&gt;
&lt;p&gt;Recently though, I picked up an iPhone 15 Pro to replace my old phone, and Apple
has replaced the physical mute switch of yore with a customisable action button,
which can even run Shortcuts! This gave me an idea to create a Shortcut workflow
to pop up a text box immediately, before sending the text off to Obsidian
afterwards.&lt;/p&gt;
&lt;figure&gt;
  
    
  
  &lt;figcaption&gt;
    Of course, if you don&apos;t have an iPhone with an action button, you can just put it as an
    icon on your homescreen instead.
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;It&apos;s nothing too fancy, but being able to get a text box summoned out of thin
air is a big plus compared to having to navigate my way to a new note manually.
The Shortcut is available from
&lt;a href=&quot;https://www.icloud.com/shortcuts/7ae0a2589764489cb3cdbc8fe22d9888&quot;&gt;iCloud directly&lt;/a&gt;,
and keep in mind that you will need to add the
&lt;a href=&quot;https://github.com/czottmann/obsidian-actions-uri&quot;&gt;Actions URI&lt;/a&gt; extension to
your vault.&lt;/p&gt;
&lt;p&gt;That link &lt;em&gt;should&lt;/em&gt; work indefinitely (at least as long as Shortcuts is still
around), but for posterity here’s an explanation of the steps it goes through to
work.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.ovy.cloud/blog/obsidian-shortcut-overview.png&quot; alt=&quot;Screenshot of the iOS Shortcuts app depicting an overview of the shortcut&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Show a text box asking for the note content.&lt;/li&gt;
&lt;li&gt;URL encode the text box input.&lt;/li&gt;
&lt;li&gt;URL encode the full path &amp;amp; name of the destination file (in this case, it&apos;s
saving to &lt;code&gt;05 - Fleeting/$DATE&lt;/code&gt; where &lt;code&gt;$DATE&lt;/code&gt; is the Current Date variable
formatted using &lt;code&gt;YYYY-MM-dd+HHmm&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;URL encode the name of the destination vault.&lt;/li&gt;
&lt;li&gt;Put together the variables into the
&lt;a href=&quot;https://zottmann.dev/obsidian-actions-uri/routes/note/#notecreate&quot;&gt;&lt;code&gt;/note/create&lt;/code&gt;&lt;/a&gt;
actions URI, using the “Open URIs” action.
(&lt;code&gt;obsidian://actions-uri/note/create?vault=$VAULT&amp;amp;file=$FILE&amp;amp;content=$TEXTBOX&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And voilà! A Shortcut for stuffing your thoughts into Obsidian at a moments
notice.&lt;/p&gt;
</content:encoded></item><item><title>Moving to Podman from Docker &amp; Docker Compose</title><link>https://ovyerus.com/posts/podman-from-docker</link><guid isPermaLink="true">https://ovyerus.com/posts/podman-from-docker</guid><description>I recently moved some personal services across machines and decided it would be a good excuse to try out Podman instead of Docker. This is a log of what I encountered in my move, as a Docker user.</description><pubDate>Wed, 11 Jan 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have a dedicated server running Proxmox, which I use to provision some virtual
machines for myself and friends. Recently I decided to move a bunch of Docker
services I had running in a LXC container on the host to their own VM, mostly
because I had some problems getting Tailscale working nicely on the container.
While doing this, I also thought it might be a nice excuse to finally give
&lt;a href=&quot;https://github.com/containers/podman&quot;&gt;Podman&lt;/a&gt; a try.&lt;/p&gt;
&lt;h2&gt;The initial move&lt;/h2&gt;
&lt;p&gt;Installing Podman is pretty simple. I&apos;m using Ubuntu 22.04 so it was already in
the repos so an easy install with APT. It&apos;s probably in your distro&apos;s
repositories as well.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install podman
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One of the cool things about Podman is that it uses the standard fork/exec
technique seen around Unix (instead of a server/client model like Docker), and
the containers are run rootless by default (as the executing user instead). This
means that if you&apos;re on a multi-user server, you don&apos;t need to give users access
to &lt;code&gt;sudo docker&lt;/code&gt; or to create a &lt;code&gt;docker&lt;/code&gt; group for them, and it makes it more
easily auditable if you have the tools for that.&lt;/p&gt;
&lt;p&gt;However because Podman is daemon-less, by default if you log out of your session
after starting some containers with it, you&apos;ll find that they&apos;ve mysteriously
disappeared. This is obviously annoying coming from Docker, but thankfully it&apos;s
easily solvable with &lt;code&gt;sudo loginctl enable-linger &amp;lt;username&amp;gt;&lt;/code&gt;, which then lets
them stay around once you log out.&lt;/p&gt;
&lt;h3&gt;Using Podman&lt;/h3&gt;
&lt;p&gt;Moving to Podman from Docker turns out to be really easy. The team has put in a
lot of effort of making the CLI almost one-to-one with Docker, with the same
commands and flags. In fact, for the most part you can just alias &lt;code&gt;docker&lt;/code&gt; to
&lt;code&gt;podman&lt;/code&gt;, and carry on with your muscle memory from before.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ podman run --rm docker.io/library/hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

&amp;lt;snip&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&apos;ll notice that I&apos;m specifying the full name for the image I want to run,
instead of doing the shorthand &lt;code&gt;hello-world&lt;/code&gt;. By default Podman doesn&apos;t expand a
shorthand image to a fully qualified name, but there is a config option for
that. In &lt;code&gt;/etc/containers/registries.conf&lt;/code&gt; (or
&lt;code&gt;~/.config/containers/registries.conf&lt;/code&gt;) you can set the option
&lt;code&gt;unqualified-search-registries&lt;/code&gt; to a list of domains to search through for a
matching image.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;unqualified-search-registries = [&quot;docker.io&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Besides this, Podman acts almost exactly how you would expect Docker would,
which is really cool. Podman also provide their own alternative to Docker
Compose called Podman Compose.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Podman Compose&lt;/h2&gt;
&lt;p&gt;Podman Compose is easy to get, being in distro repos alongside Podman, and takes
after Docker Compose v1 in the sense that it&apos;s a Python CLI script which manages
a group of containers and associated networks &amp;amp; volumes from a single manifest.
For the most common usage you would want from Compose, Podman&apos;s is a decent
solution.&lt;/p&gt;
&lt;p&gt;I personally have some gripes with some of Podman Compose&apos;s behaviour though,
mainly in regards to how &lt;code&gt;up&lt;/code&gt; works compared to Docker Compose. If you ever need
to update a compose file or the image one of the containers use, usually you
would just run &lt;code&gt;docker-compose up&lt;/code&gt; and have Compose manage recreating the
related containers for you, however Podman Compose just doesn&apos;t do this. Nothing
happens if you try to &lt;code&gt;up&lt;/code&gt; an already running config, you need to take down the
entire deployment with &lt;code&gt;docker-compose down&lt;/code&gt; and then run &lt;code&gt;up&lt;/code&gt; again afterwards,
which is pretty annoying.&lt;/p&gt;
&lt;p&gt;Additionally, the logs shown given by it are pretty painful. There&apos;s a lot of
noise where it has lines that look like something you would only expect to see
with a debug option enabled. Call me a zoomer, but I much prefer how Docker
Compose hides all that debug logging, and even gives you container labels +
colour coding for each different log stream. It&apos;s infinitely easier to
understand what&apos;s going on - especially if it&apos;s not a service you&apos;ve made
yourself, where you can&apos;t change the log format.&lt;/p&gt;
&lt;p&gt;Thankfully, however, you can actually use Docker Compose &lt;em&gt;natively with Podman&lt;/em&gt;
without needing any weird hacks or doing anything stupid.&lt;/p&gt;
&lt;h2&gt;Docker Compose&lt;/h2&gt;
&lt;p&gt;Yup, that&apos;s right! Because of Podman wanting to make it as frictionless as
possible to migrate from Docker, they&apos;re actually compatible enough on the
socket to natively support running Docker Compose. I&apos;m going to be using Docker
Compose v2 in this because it has some niceties like &lt;code&gt;docker-compose ls&lt;/code&gt; and
because it&apos;s distributed as a single static Golang binary, making it easy to
download.&lt;/p&gt;
&lt;p&gt;Now, Podman only added proper support for Compose v2 in
&lt;a href=&quot;https://github.com/containers/podman/releases/tag/v4.1.0&quot;&gt;v4.1.0&lt;/a&gt;, so let&apos;s see
if we have that.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ podman -v
podman version 3.4.4

$ apt info podman
Package: podman
Version: 3.4.4+ds1-1ubuntu1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Oh. That&apos;s a bit of a problem.&lt;/p&gt;
&lt;p&gt;(If you&apos;re on a future version of Ubuntu (hopefully 23.04 has the right
version), or on a different/rolling release distro, this following section
probably won&apos;t apply to you.)&lt;/p&gt;
&lt;h3&gt;Getting the correct Podman version&lt;/h3&gt;
&lt;p&gt;Yup, it turns out Ubuntu 22.04 just missed out on getting the minimum version we
need in order to be able to use Docker Compose with it. Thankfully however,
since Ubuntu is based on Debian, we can actually yoink an updated &lt;code&gt;.deb&lt;/code&gt; of the
version we want from their repos. Before that though, we need to install
&lt;code&gt;libsubid4&lt;/code&gt; for it. I tried with &lt;code&gt;4.13&lt;/code&gt; from the Debian repos which didn&apos;t work
(I forget the exact error I had), so instead I had to fetch &lt;code&gt;4.11.1&lt;/code&gt; from
Ubuntu&apos;s repos and use that, since that&apos;s only available from &amp;gt;=22.10 as well.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://security.ubuntu.com/ubuntu/pool/main/s/shadow/libsubid4_4.11.1+dfsg1-2ubuntu1.1_amd64.deb
sudo dpkg -i ibsubid4_4.11.1dfsg1-2ubuntu1.1_amd64_1.deb
wget http://ftp.au.debian.org/debian/pool/main/libp/libpod/podman_4.3.1+ds1-5+b1_amd64.deb
sudo dpkg -i podman_4.3.1+ds1-5+b1_amd64.deb
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;$ podman -v
podman version 4.3.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sweet!&lt;/p&gt;
&lt;p&gt;NB: after doing this method, I encountered a bit of weirdness due to not having
&lt;code&gt;containernetworking-plugins&lt;/code&gt;, some sort of packaging error I suppose, but this
was a simple fix by getting it via APT.&lt;/p&gt;
&lt;h3&gt;Getting Docker Compose&lt;/h3&gt;
&lt;p&gt;So now we have a compatible version of Podman, we can turn our attention to
getting Docker Compose. Ubuntu only ships 1.29 for some reason, so we need to v2
manually. Docker provides compiled executables on its
&lt;a href=&quot;https://github.com/docker/compose/releases&quot;&gt;GitHub releases page&lt;/a&gt; so we can
just pull it from the latest release there.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://github.com/docker/compose/releases/download/v2.15.0/docker-compose-linux-x86_64
sudo mv ./docker-compose-linux-x86_64 /usr/bin/docker-compose
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Simple.&lt;/p&gt;
&lt;h3&gt;Using it&lt;/h3&gt;
&lt;p&gt;Before we can get started with Docker Compose, we first need to fool it into
thinking that Docker actually exists on our system. Usually it would expect a
Docker socket at &lt;code&gt;unix:///var/run/docker.sock&lt;/code&gt;, but Podman obviously doesn&apos;t
provide this, but if a &lt;code&gt;$DOCKER_HOST&lt;/code&gt; variable is around, Compose will instead
prioritise using that. With this we can simply just pass our rootless Podman
socket as &lt;code&gt;$DOCKER_HOST&lt;/code&gt; - by default this is at
&lt;code&gt;unix://$XDG_RUNTIME_DIR/podman/podman.sock&lt;/code&gt;, if you&apos;re on the first/sole user
on your system this will probably be &lt;code&gt;unix:///run/user/1000/podman/podman.sock&lt;/code&gt;
like it was for me. Do double check though!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set -x DOCKER_HOST unix:///run/user/1000/podman/podman.sock
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h4&gt;Edit&lt;/h4&gt;
&lt;p&gt;One thing I didn&apos;t realise at the time of making this post originally, was that
this socket isn&apos;t actually created by default. You will need to have Podman
launched as a service so that the socket exists, this can either be done with
the &lt;code&gt;podman system service&lt;/code&gt; command or just by using systemd.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl enable --user podman
systemctl start --user podman
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;And with this, we&apos;re all set to use Docker Compose as we would if we were just
using normal Docker on our system, with re-running &lt;code&gt;docker-compose up&lt;/code&gt;
restarting only the necessary containers as we would expect!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Keeping everything running with systemd&lt;/h2&gt;
&lt;p&gt;Now we have everything running nicely with Podman &amp;amp; Docker Compose. However,
there is one small problem we have right now. When we reboot the machine, our
services don&apos;t get brought up on startup. What??&lt;/p&gt;
&lt;p&gt;This is due to Podman being a &lt;em&gt;daemonless&lt;/em&gt; container runtime, so it has nothing
that is around at startup time which can bring our containers online for us.
Unless we intervene.&lt;/p&gt;
&lt;p&gt;If we were using containers we had set up manually, and didn&apos;t mind managing a
bunch of different unit files, Podman ships with &lt;code&gt;podman generate systemd&lt;/code&gt; takes
a container name or ID and spits out a unit file along these lines:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# container-postgres.service
# autogenerated by Podman 4.3.1
# Sun Jan  8 10:45:24 UTC 2023

[Unit]
Description=Podman container-postgres.service
Documentation=man:podman-generate-systemd(1)
Wants=network-online.target
After=network-online.target
RequiresMountsFor=/run/user/1000/containers

[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Restart=on-failure
TimeoutStopSec=60
ExecStart=/usr/bin/podman start postgres
ExecStop=/usr/bin/podman stop  \
	-t 0 postgres
ExecStopPost=/usr/bin/podman stop  \
	-t 0 postgres
PIDFile=/run/user/1000/containers/overlay-containers/46d92085dcde44ec376ab13e5a55ee4ad6b87e961934bd881e9b5cbaa204692d/userdata/conmon.pid
Type=forking

[Install]
WantedBy=default.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, if you&apos;re using Compose configs, this can be a lot to manage depending
on how many containers you&apos;re managing in each one, and some services might need
a specific start order/conditions to be met in order to start properly. And it&apos;s
also just a lot to do when you&apos;re wanting to host something like
&lt;a href=&quot;https://plausible.io/&quot;&gt;Plausible&lt;/a&gt; or &lt;a href=&quot;https://sentry.io/&quot;&gt;Sentry&lt;/a&gt;. So sadly
this isn&apos;t much use to us, but it is useful as a head start on creating our own
units.&lt;/p&gt;
&lt;p&gt;What I ended up doing was modifying it so that all the unit ends up doing is
starts the &lt;code&gt;docker-compose up&lt;/code&gt; process with &lt;code&gt;--detach&lt;/code&gt; so that it isn&apos;t
controlling it outright. I do it this way instead of owning the compose process,
it exits after bringing anything up so that if I need to update a config or an
image, I can just do so with the compose CLI (it&apos;s just what I prefer). However
if you have a service which exits at any time, by default systemd will consider
it finished andthus run the &lt;code&gt;ExecStop&lt;/code&gt; command. Thankfully they provide two
options that counter this, making it consider such a service &quot;alive&quot; after it&apos;s
finished running: &lt;code&gt;Type=oneshot&lt;/code&gt; and &lt;code&gt;RemainAfterExit=yes&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Knowing this, here is the unit file I came up with to run Docker Compose on
boot:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Unit]
Description=Databases compose config
Wants=network-online.target
After=network-online.target
RequiresMountsFor=/run/user/1000/containers

[Service]
Type=oneshot
RemainAfterExit=yes
Environment=&quot;PATH=/usr/local/bin:/usr/bin:/bin&quot;
Environment=&quot;DOCKER_HOST=unix:///run/user/1000/podman/podman.sock&quot;
ExecStart=docker-compose -f /home/ovy/dbs/docker-compose.yml up -d
ExecStop=docker-compose -f /home/ovy/dbs/docker-compose.yml down

[Install]
WantedBy=default.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&apos;ll have this saved as &lt;code&gt;dbs-compose.service&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately you will still need to create a unit file for each compose config
you have (unless you create something like a shell script which does them for
you), but it&apos;s still a lot better than if you had to do it for each container.
An additional note is that if you&apos;re using &lt;code&gt;$PWD&lt;/code&gt; in your compose configs, you
will need to rewrite them to use relative or absolute paths instead, as it will
instead point to some other location - probably the FS root.&lt;/p&gt;
&lt;p&gt;To keep in line with the idea of Podman being rootless, I have these run as user
services under systemd, and it also just makes managing them easier in my
opinion. To do this you&apos;ll need to put them into &lt;code&gt;~/.config/systemd/user/&lt;/code&gt; and
then use &lt;code&gt;systemctl --user&lt;/code&gt; to enable and start them running as your user
account.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p ~/.config/systemd/user
# Copy/create all your unit files in that directory
systemctl --user daemon-reload
# Now to enable &amp;amp; start each service
systemctl --user enable db-compose.service
systemctl --user start db-compose.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now if you run &lt;code&gt;systemctl --user status my-compose.service&lt;/code&gt; you should see
something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;● dbs-compose.service - Databases compose config
     Loaded: loaded (/home/ovy/.config/systemd/user/dbs-compose.service; enabled; v&amp;gt;
     Active: active (exited) since Sun 2023-01-08 02:41:08 UTC; 22h ago
    Process: 696 ExecStart=docker-compose -f /home/ovy/dbs/docker-compose.yml up -d&amp;gt;
   Main PID: 696 (code=exited, status=0/SUCCESS)
        CPU: 78ms

Jan 08 02:40:57 solai systemd[648]: Starting Databases compose config...
Jan 08 02:41:06 solai docker-compose[696]: Container minio  Starting
Jan 08 02:41:06 solai docker-compose[696]: Container postgres  Starting
Jan 08 02:41:07 solai docker-compose[696]: Container minio  Started
Jan 08 02:41:08 solai docker-compose[696]: Container postgres  Started
Jan 08 02:41:08 solai systemd[648]: Finished Databases compose config.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Even though we can see the script has exited, it&apos;s still being considered as
active thanks to our use of &lt;code&gt;Type=oneshot&lt;/code&gt; and &lt;code&gt;RemainAfterExit=yes&lt;/code&gt;. And now
when we reboot our machine, the services will come up automatically without us
needing to intervene!&lt;/p&gt;
&lt;p&gt;If you have a compose setup where one config relies on containers another one
manages - for example, a single centralised database setup for other services -
you can utilise systemd&apos;s
&lt;a href=&quot;https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Wants=&quot;&gt;&lt;code&gt;Wants&lt;/code&gt;/&lt;code&gt;Requires&lt;/code&gt;&lt;/a&gt;
and
&lt;a href=&quot;https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Before=&quot;&gt;&lt;code&gt;After&lt;/code&gt;&lt;/a&gt;
options to make sure they start in the correct order.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Overall, the move to Podman was relatively painless. Besides some packaging
unluckiness on Ubuntu&apos;s part, it was easy to get up and running coming from
Docker, and the compatibility with existing tools like Docker Compose is a huge
plus too. It would be nice to see Podman Compose to be improved a bit to be up
to par with Docker Compose - at least in regards to re-&lt;code&gt;up&lt;/code&gt; behaviour and logs -
as it is a good offering, but what&apos;s there right now works.&lt;/p&gt;
&lt;p&gt;This is the first blog post I&apos;ve written ever, so let me know how it went, if
there&apos;s anything I can improve for future posts, etc. Thanks!&lt;/p&gt;
</content:encoded></item></channel></rss>