A resposta acabou sendo: use volumes nomeados e adicione um script para copiar certificados nos volumes no disco local do host do docker. Funciona assim:
- Crie um volume nomeado montado em
/certs
. - Certifique-se de que o Apache use os certificados localizados aqui nos seus arquivos de configuração do site.
- Configure o cert-bot para renovar automaticamente a partir do host e use os pre-hooks para encerrar a instância do docker.
- Depois que o cert-bot renova o certificado, use post-hooks para executar um script para copiar os certificados recém-cunhados / renovados de /etc/letsencrypt/live/foosite.com/ (ou similar) para a localização do volume - sobrescrevendo o que é lá.
Este último passo requer um pouco de esforço. Depois de criar o volume nomeado pela primeira vez, você precisará usar docker volume ls
e docker volume inspect
para descobrir onde esse volume é mantido no sistema de arquivos do host. Ele estará em algum lugar em / var / lib / docker, geralmente.
Seu script de pós-gancho da etapa 4 acima simplesmente copia diretamente os certificados do diretório ativo para este volume da janela de encaixe e, ENTÃO, reinicia os contêineres.