Preciso fazer backup de um volume do docker em um diretório específico dentro de outro volume do docker usando Duplicity. Então preciso executar um comando como este dentro do container realizando o backup:
mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label
Portanto, criei uma imagem docker contendo duplicidade para que eu possa executar o comando acima mapeando o volume para o backup /target
e o volume que armazena o backup /backup
.
Portanto, minha pergunta é como passar $backup-label para o run
comando e como criar o Entrypoint para garantir que a estrutura de diretórios correta exista antes de executar a duplicidade conforme indicado acima?
TIA, Olé
PS Se eu pudesse executar o contêiner assim:
ole@MKI:~$ docker run --rm -it -v data-volume:/target -v backup-volume/label-for-backup:/backup duplicity-backup-image
Isso resolveria. Mas aparentemente o docker não permite o mapeamento de subdiretórios dentro de volumes. Quando tento recebo a seguinte mensagem:
docker: Error response from daemon: create backup-volume/label-for-backup: "backup-volume/label-for-backup" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.
Responder1
Uma boa solução é usar um script de shell como CMD
ou ENTRYPOINT
.
Se quiser passar variáveis para o script, você pode usar -e para passar quaisquer variáveis de ambiente para o script: docker run -e backup-label=somelabel
. Esta opção tem a vantagem de poder configurar diversas áreas sem interpretar parâmetros. Sugiro que você também dê uma olhada no${variable:-}
sintaxe.
No seu caso:docker run --rm -e backup-label=somelabel -it -v data-volume:/target -v backup-volume/label-for-backup:/backup duplicity-backup-image
O script de shell (certifique-se de que seja executável):
#!/bin/sh
mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label
(Ooutra respostatalvez seja a solução mais elegante para o seu caso de uso. Mas esta questão é um pouco diferente, e a resposta também. Então, para referência. Além disso, como se seus requisitos devessem se tornar mais complicados...)