The tested echo server container ghcr.io/eriksjolund/socket-activate-echo supports socket activation.
Using socket activation has the advantage that there is no need for the client to use /usr/bin/sleep combined with a while-loop to check if the server is online.
The file .github/workflows/demo.yml contains:
name: Echo server demo with podman and systemd
on:
push:
branch:
- main
jobs:
systemd_podman_echo_server_demo:
runs-on: ubuntu-24.04
permissions:
contents: read
steps:
- name: Run actions/checkout for this repo
uses: actions/checkout@v4
with:
path: checkout
persist-credentials: false
- name: Run an echo server with podman in a user systemd service
run: |
sudo apt-get update
sudo apt-get install -y socat
podman pull ghcr.io/eriksjolund/socket-activate-echo:latest
mkdir -p ~/.config/containers/systemd
mkdir -p ~/.config/systemd/user
cp checkout/echo.container ~/.config/containers/systemd
cp checkout/echo.socket ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user start echo.socket
echo hello | socat - tcp4:127.0.0.1:3000
echo hello | socat - tcp6:[::1]:3000
echo hello | socat - udp4:127.0.0.1:3000
echo hello | socat - udp6:[::1]:3000
echo hello | socat - unix:$HOME/echo_stream_sock
echo hello | socat - VSOCK-CONNECT:1:3000