Eu tentei fazer isso por cerca de meia hora. O Podman é compatível em termos de comandos, mas não em termos de saída, então o launcher fica confuso ao tentar analisar a saída. (Não é difícil diferenciá-los: docker --version responde com podman version 1.0.5, então isso não é um impedimento sério.)
Não há dispositivo de rede docker0. O driver de armazenamento overlay padrão no Podman é basicamente a implementação overlay2 e está aliasado a ele, mas a saída não diz overlay2 e a saída do comando docker info é ligeiramente diferente. Usei --skip-prereqs para contornar as verificações. Os diretórios compartilhados não foram criados automaticamente; não investiguei o motivo. Executei mkdir -p /var/discourse/shared/standalone/log/var-log para continuar. Em seguida, vi problemas de permissão devido ao SELinux em modo de imposição, mas não configurado para /var/discourse.
Se você montar um diretório como volume em um contêiner e adicionar :z ou :Z, os motores de contêiner rotularão o conteúdo sob os volumes para container_file_t.
A documentação de build do Podman diz:
A opção z informa ao Podman que dois contêineres compartilham o conteúdo do volume. Como resultado, o Podman rotula o conteúdo com uma etiqueta de conteúdo compartilhado. Etiquetas de volume compartilhado permitem que todos os contêineres leiam/gravem o conteúdo. A opção Z informa ao Podman para rotular o conteúdo com uma etiqueta privada não compartilhada. Apenas o contêiner atual pode usar um volume privado.
Decidi executar setenforce 0 por enquanto nesta instalação descartável e voltar a isso mais tarde, talvez. Alterei os volumes para usar o :z em minúsculo, assim:
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared:z
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log:z
Com essas pequenas modificações, consegui inicializar o Discourse. O Redis está insatisfeito com o fato de as páginas grandes transparentes (transparent huge pages) serem suportadas no kernel e sugere desativá-las, além de alterar as configurações de comprometimento de memória. Provavelmente, muitas outras mensagens úteis de depuração passaram despercebidas por mim entre os megabytes de saída de log!
./launcher start app
...
--restart option is not supported.
Use systemd unit files for restarting containers
Hackeiei o script para não usar --restart e descobri a necessidade de --skip-prereqs também no modo start, o que finalmente me levou a tentar docker run, momento em que:
./launcher start app --skip-prereqs
...
+ /usr/bin/docker run ... -e DOCKER_HOST_IP= --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared:z -v /var/discourse/shared/standalone/log/var-log:/var/log:z --mac-address 02:9c:01:9b:0e:17 local_discourse/app /sbin/boot
--mac-address option not currently supported
Portanto, definitivamente não funciona fora da caixa, e não sei quanto trabalho seria necessário para ajustar o launcher para funcionar com Docker ou Podman. Lidar com o gerenciamento de pré-requisitos seria “apenas funcionar” e provavelmente não seria muito difícil com uma verificação inicial para o Podman, mas não sei o quão profundas são as suposições sobre a configuração de rede na pilha de configuração, e parece que esse modo de rede simplesmente não é suportado pelo Podman.
Com base nessa preocupação, estou planejando não fazer o trabalho para fazer o launcher funcionar sob o Podman. Estou apenas relatando o resultado de um experimento rápido inicial.
Dito isso, provavelmente não é um trabalho difícil para alguém que conhece melhor a pilha. Fiz todo o meu trabalho de desenvolvimento nesta primavera em uma instalação manual de desenvolvimento no Fedora 29 com ajustes triviais, como usar dnf em vez de apt-get e algumas traduções menores de nomes de pacotes, sem usar Docker ou Podman de forma alguma. Espero que alguém que conheça bem o Podman, assim como a administração normal de toda a pilha de tecnologia do Discourse, provavelmente considere isso uma quantidade moderada de trabalho relativamente fácil. Se eu soubesse exatamente todo o trabalho envolvido, teria uma melhor noção de se seria o tipo de trabalho que provavelmente “apodreceria” e precisaria de manutenção contínua ou não. Mas… eu não sei. 