Our IT-dept would like us to deploy openedx with tutor using podman instead of docker because podman is supposed to be more secure than docker since it’s possible to run podman without risking the containers gaining root privileges.
tutor local launch fails at this point because podman and podman-compose don’t support the parameter ls –format json
Has anyone had any luck installing tutor 20.0.1 using podman and podman-compose?
We have tried to follow the instructions on running tutor with podman: Running Tutor with Podman — Tutor documentation
Podman-packages we have installed on our system:
dnf list installed | grep podman
podman.x86_64 6:5.4.0-13.el10_0 @rhel-10-for-x86_64-appstream-rpms
podman-compose.noarch 1.5.0-1.el10_1 @epel
podman-docker.noarch 5.4.0-13.el10_0 @rhel-10-for-x86_64-appstream-rpms
podman-docker will emulate docker cli using podman. Calling docker or docker compose will use podman and podman-compose, however in our case the installation fails as podman does not support the parameter: ls –format json
OS:
Red Hat Enterprise Linux release 10.0 (Coughlan)
$ docker version
Client: Podman Engine
Version: 5.4.0
API Version: 5.4.0
Go Version: go1.24.6 (Red Hat 1.24.6-1.el10_0)
Built: Wed Sep 10 02:00:00 2025
Build Origin: Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
OS/Arch: linux/amd64
$ docker compose version
Executing external compose provider “/bin/podman-compose”. Please see podman-compose(1) for how to disable this message. <<<<
podman-compose version 1.5.0podman version 5.4.0
Output when trying to run tutor local launch:
$ tutor local launch
==================================================
Interactive platform configuration
==================================================
Are you configuring a production platform? Type 'n' if you are just testing Tutor on your local computer [Y/n] Y
Your website domain name for students (LMS) [servername.example.com]
Your website domain name for teachers (CMS) [studio.servername.example.com]
Your platform name/title [servername]
Your public contact email address [openedx@example.com]
The default language code for the platform [en]
Activate SSL/TLS certificates for HTTPS access? Important note: this will NOT work in a development environment. [Y/n] Y
Configuration saved to /opt/openedx/tutor/config.yml
Environment generated in /opt/openedx/tutor/env
======================================
Building Docker images
======================================
No image to build
==============================================
Stopping any existing platform
==============================================
docker compose -f /opt/openedx/tutor/env/local/docker-compose.yml -f /opt/openedx/tutor/env/local/docker-compose.prod.yml --project-name tutor_local stop
Error: no container with name or ID "tutor_local_mfe_1" found: no such container
Error: no container with name or ID "tutor_local_mongodb_1" found: no such container
Error: no container with name or ID "tutor_local_caddy_1" found: no such container
Error: no container with name or ID "tutor_local_lms_1" found: no such container
Error: no container with name or ID "tutor_local_lms-worker_1" found: no such container
Error: no container with name or ID "tutor_local_smtp_1" found: no such container
Error: no container with name or ID "tutor_local_cms-worker_1" found: no such container
Error: no container with name or ID "tutor_local_redis_1" found: no such container
Error: no container with name or ID "tutor_local_meilisearch_1" found: no such container
Error: no container with name or ID "tutor_local_cms_1" found: no such container
Error: no container with name or ID "tutor_local_mysql_1" found: no such container
Error: no container with name or ID "tutor_local_permissions_1" found: no such container
======================================================
Starting the platform in detached mode
======================================================
docker compose -f /opt/openedx/tutor/env/local/docker-compose.yml -f /opt/openedx/tutor/env/dev/docker-compose.yml --project-name tutor_dev ls --format json
usage: podman-compose [-h] [-v] [--in-pod in_pod] [--pod-args pod_args]
[--env-file env_file] [-f file] [--profile profile]
[-p PROJECT_NAME] [--podman-path PODMAN_PATH]
[--podman-args args] [--podman-pull-args args]
[--podman-push-args args] [--podman-build-args args]
[--podman-inspect-args args] [--podman-run-args args]
[--podman-start-args args] [--podman-stop-args args]
[--podman-rm-args args] [--podman-volume-args args]
[--no-ansi] [--no-cleanup] [--dry-run]
[--parallel PARALLEL] [--verbose]
{help,version,wait,systemd,pull,push,build,up,down,ps,run,exec,start,stop,restart,logs,config,port,pause,unpause,kill,stats,images}
...
podman-compose: error: argument command: invalid choice: 'ls' (choose from help, version, wait, systemd, pull, push, build, up, down, ps, run, exec, start, stop, restart, logs, config, port, pause, unpause, kill, stats, images)
Error applying action: func=<function _stop_on_local_start at 0x7f1f7cf12fc0> contexts=[]'
Error: Command failed: docker compose -f /opt/openedx/tutor/env/local/docker-compose.yml -f /opt/openedx/tutor/env/dev/docker-compose.yml --project-name tutor_dev ls --format json