Ponto de entrada composto do Docker?

Ponto de entrada composto do Docker?

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 /targete o volume que armazena o backup /backup.

Portanto, minha pergunta é como passar $backup-label para o runcomando 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 CMDou 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...)

informação relacionada