I am trying to use as mush as possible the podman command to manage my containers.
I need to run the docker-compose command to deploy a multi container application. Is there any similar option with podman?

Thank you

I think the roadmap here was to use the podman pod subcommand for docker compose like functionality. I don’t know if that’s been implmented or not or how far along it is. reference: https://github.com/containers/libpod/issues/341

I will investigate this way.

Thank you

Also, https://github.com/containers/libpod/issues/746

If you are still interested with the latest podman version you can create pods which makes it easy to create multi container applications.

You can check this PR https://github.com/fedora-infra/fpdc/pull/49 where I use podman and Makefile to replace docker-compose

4 Likes

Hi. I have a docker-compose.yml:

version: '3'

services:
  back:
    image: docker.io/basilrabi/back
    container_name: taiga-back
    restart: unless-stopped
    depends_on:
      - db
      - events
    networks:
      - default
    volumes:
      - ./data/media:/taiga-media
      - ./conf/back:/taiga-conf
    env_file:
      - variables.env

  front:
    image: docker.io/dockertaiga/front
    container_name: taiga-front
    restart: unless-stopped
    networks:
      - default
    volumes:
      - ./conf/front:/taiga-conf
    env_file:
      - variables.env

  db:
    image: docker.io/postgres:11-alpine
    container_name: taiga-db
    restart: unless-stopped
    networks:
      - default
    env_file:
      - variables.env
    volumes:
      - ./data/db:/var/lib/postgresql/data

  rabbit:
    image: docker.io/dockertaiga/rabbit
    container_name: taiga-rabbit
    restart: unless-stopped
    networks:
      - default
    env_file:
      - variables.env

  events:
    image: docker.io/dockertaiga/events
    container_name: taiga-events
    restart: unless-stopped
    depends_on:
      - rabbit
    networks:
      - default
    env_file:
      - variables.env

  proxy:
    image: docker.io/basilrabi/proxy
    container_name: taiga-proxy
    restart: unless-stopped
    depends_on:
      - back
      - front
      - events
    networks:
      - default
    ports:
      - 80:80
      - 443:443
    volumes:
      #- ./cert:/taiga-cert
      - ./conf/proxy:/taiga-conf
    env_file:
      - variables.env

networks:
  default:

with a variables.env:

TAIGA_HOST=192.169.101.133
TAIGA_SCHEME=http
TAIGA_BACK_HOST=back
TAIGA_FRONT_HOST=front
EVENTS_HOST=events
TAIGA_SECRET=bjmW2hU5dLHya6hiovtslHyXlAB3xYpZ3EeP6fPnDkRqxKJONOYDggLaP74lgF3s

ENABLE_SSL='no'
# CERT_NAME=fullchain.pem
# CERT_KEY=privkey.pem

POSTGRES_HOST=db
POSTGRES_DB=taiga
POSTGRES_USER=taiga
POSTGRES_PASSWORD=taiga

RABBIT_HOST=rabbit
RABBIT_USER=taiga
RABBIT_PASSWORD=password
RABBIT_VHOST=taiga

STARTUP_TIMEOUT=15s

SET_EMAIL_BACKEND=False
SET_EMAIL_USE_SSL=False
SET_EMAIL_HOST=smtp.gmail.com
SET_EMAIL_PORT=587
SERVER_EMAIL_USER=server@gmail.com
SERVER_EMAIL_PASSWORD=servermailpassword

When using docker-compose up, I can see the web site in http://192.169.101.133. I attempted to convert to podman and created the following script:

#!/bin/bash

VOL=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )

mkdir -p $VOL/conf/back
mkdir -p $VOL/conf/front
mkdir -p $VOL/conf/proxy
mkdir -p $VOL/data/db
mkdir -p $VOL/data/media

podman pod exists taiga
if [ "$?" == "0" ]; then
	podman pod rm -f taiga
fi

podman pod create --name taiga && \
podman run --name db \
	--hostname db \
	--pod taiga -dt \
	--env-file variables.env \
	-v $VOL/data/db:/var/lib/postgresql/data:z \
	--image-volume tmpfs \
	docker.io/postgres:11-alpine && \
podman run --name rabbit \
	--hostname rabbit \
	--pod taiga -dt \
	--env-file variables.env \
	docker.io/dockertaiga/rabbit && \
podman run --name front \
	--hostname front \
	--pod taiga -dt \
	--env-file variables.env \
	-v $VOL/conf/front:/taiga-conf:z \
	--image-volume tmpfs \
	docker.io/dockertaiga/front && \
podman run --name events \
	--hostname events \
	--pod taiga -dt \
	--env-file variables.env \
	docker.io/dockertaiga/events && \
podman run --name back \
	--hostname back \
	--pod taiga -dt \
	--env-file variables.env \
	-v $VOL/data/media:/taiga-media:z \
	-v $VOL/conf/back:/taiga-conf:z \
	--image-volume tmpfs \
	docker.io/basilrabi/back && \
podman run --name proxy \
	--pod taiga -dt \
	--env-file variables.env \
	-p 80:80 \
	-v $VOL/conf/proxy:/taiga-conf:z \
	--image-volume tmpfs \
	docker.io/basilrabi/proxy

However, the containers seem to fail to communicate with each other. Any advice on how to replicate the behavior of docker-compose up using podman? I’m a beginer in podman. Thank you in advance.