Compound Docker Entrypoint?

1

Eu preciso fazer o backup de um volume do docker em um diretório específico em outro volume de docker usando o Duplicity. Então, eu preciso executar um comando como este dentro do contêiner executando o backup:

mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label

Portanto, criei uma imagem docker contendo duplicidade para poder executar o comando acima com o mapeamento do volume do backup para /target e o volume que armazena o backup em /backup .

Então, minha pergunta é como passar $ backup-label para o comando run e como criar o Entrypoint para garantir que a estrutura de diretórios correta exista antes da execução da duplicidade, conforme indicado acima?

TIA, Ole

P.S. Se eu pudesse rodar o container assim:

ole@MKI:~$ docker run --rm -it -v data-volume:/target -v backup-volume/label-for-backup:/backup duplicity-backup-image

Isso resolveria isso. Mas, aparentemente, o docker não permite o mapeamento de subdiretórios nos 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.
    
por Ole 19.05.2016 / 04:58

1 resposta

1

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 várias áreas sem interpretar os parâmetros. Sugiro também analisar a % sintaxe${variable:-} .

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 (verifique se é executável):

#!/bin/sh 
mkdir -p /backup/$backup-label
duplicity /target file:///backup/$backup-label

(A outra resposta talvez seja a mais elegante solução para o seu caso de uso. Mas essas perguntas são um pouco diferentes, e a resposta também. Então, para referência. Além disso, como se suas necessidades se tornassem mais complicadas ...)

    
por 31.01.2017 / 08:06