Why Podman for Odoo?
Podman is a daemonless container engine that runs containers as non-root users by default. Unlike Docker, Podman does not require a background daemon, making it more secure and suitable for environments where Docker is restricted (RHEL, government, enterprise).
Install Podman
# RHEL/Rocky/Alma Linux
sudo dnf install -y podman podman-compose
# Debian/Ubuntu
sudo apt install -y podman podman-compose
# Verify
podman --version
podman infoRootless Odoo Setup
# Create dedicated user
sudo useradd -m odoo-podman
sudo loginctl enable-linger odoo-podman
sudo su - odoo-podman
# Pull Odoo image
podman pull docker.io/odoo:19
podman pull docker.io/postgres:16
# Create pod (shared network namespace)
podman pod create --name odoo-pod \
-p 8069:8069 -p 8072:8072Run with Podman Pod
# Start PostgreSQL in the pod
podman run -d --pod odoo-pod \
--name odoo-db \
-e POSTGRES_USER=odoo \
-e POSTGRES_PASSWORD=odoo_pass \
-e POSTGRES_DB=postgres \
-v odoo-db-data:/var/lib/postgresql/data \
postgres:16
# Start Odoo in the same pod
podman run -d --pod odoo-pod \
--name odoo-app \
-e HOST=localhost \
-e USER=odoo \
-e PASSWORD=odoo_pass \
-v odoo-data:/var/lib/odoo \
-v ./custom-addons:/mnt/extra-addons \
-v ./odoo.conf:/etc/odoo/odoo.conf \
odoo:19Podman Compose
# podman-compose.yml (same syntax as Docker)
version: '3.8'
services:
db:
image: postgres:16
environment:
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo_pass
volumes:
- db-data:/var/lib/postgresql/data
odoo:
image: odoo:19
depends_on:
- db
ports:
- "8069:8069"
- "8072:8072"
environment:
HOST: db
USER: odoo
PASSWORD: odoo_pass
volumes:
- odoo-data:/var/lib/odoo
- ./custom:/mnt/extra-addons
volumes:
db-data:
odoo-data:
# Run with:
podman-compose up -dSystemd Integration
# Generate systemd unit files from running pod
podman generate systemd --new --name odoo-pod \
--files --restart-policy=always
# Install as user service
mkdir -p ~/.config/systemd/user/
cp *.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable pod-odoo-pod.service
# Auto-start on boot (requires linger)
systemctl --user start pod-odoo-pod.servicePodman vs Docker Key Differences
# Podman advantages for Odoo:
# - No root daemon (security)
# - Pods group containers (like k8s pods)
# - Systemd integration (auto-restart)
# - SELinux compatible by default
# - Drop-in Docker CLI replacement
# Watch out for:
# - Volume permission differences (UID mapping)
# - Network namespace behavior in pods
# - Some Docker Compose features missing
# - Container image compatibility (usually fine)DeployMonkey Alternative
DeployMonkey handles container orchestration for you. Deploy Odoo with proper networking, volumes, and monitoring without managing Podman or Docker directly.