2016-04-01 16 views
2

Dies ist meine erste Frage an Stackoverflow, so hoffe ich es die Community-Richtlinien einhalten werde:„Not a tty“ Fehler in Alpine-basiertem Duplizität Bild

Ich baue habe eine Docker image basierend auf einem bereits existing Image, das den alleinigen Zweck hat, Duplikate in einem Container auszuführen, um Dateien und Ordner in einem Amazon S3-Bucket in Europa zu sichern.

Duplicity funktionierte für ein paar Tage, wenn manuell in einem Container aus dem Bild ausgeführt wird. Jetzt habe ich Container über Unit-Dateien auf dem Host mit CoreOS laufen lassen und Dinge funktionieren nicht mehr - aber der Befehl wird auch nicht funktionieren Ich führe es manuell in einem Duplicity-Container.

Der run-Befehl:

docker run --rm --env-file=<my backup env file>.env --name=<container image> -v <cache container>:/home/duplicity/.cache/duplicity -v <docker volume with gpg keys>:/home/duplicity/.gnupg --volumes-from <docker container of interest> gymnae/duplicity 

die env-Datei enthält folgende Komponenten:

PASSPHRASE=<my super secret passphrase> 
AWS_ACCESS_KEY_ID=<my aws access key id> 
AWS_SECRET_ACCESS_KEY=<my aws access key> 
SOURCE_PATH=<where does the data come from> 
REMOTE_URL=s3://s3.eu-central-1.amazonaws.com/<my bucket> 
PARAMS_CLEAN="--remove-older-than 3M --force --extra-clean" 
ENCRYPT_KEY=<derived from the gpg key> 

Und die init.sh, die auf docker run genannt wird, sieht wie folgt aus:

#!/bin/sh 
duplicity \ 
     --verbosity 8 \ 
     --s3-use-ia \ 
     --s3-use-new-style \ 
     --s3-use-server-side-encryption \ 
     --s3-european-buckets \ 
     --allow-source-mismatch \ 
     --ssl-no-check-certificate \ 
     --s3-unencrypted-connection \ 
     --volsize 150 \ 
     --gpg-options "--no-tty" \ 
     --encrypt-key $ENCRYPT_KEY \ 
     --sign-key $ENCRYPT_KEY \ 
     $SOURCE_PATH \ 
     $REMOTE_URL 

Ich habe versucht, mit -i, -it, -t und nur -d - aber das Ergebnis ist immer das gleiche:

===== Begin GnuPG log ===== 
gpg: using "<supersecret>" as default secret key for signing 
gpg: signing failed: Not a tty 
gpg: [stdin]: sign+encrypt failed: Not a tty 
===== End GnuPG log ===== 

GPG error detail: Traceback (most recent call last): 
    File "/usr/bin/duplicity", line 1532, in <module> 
    with_tempdir(main) 
    File "/usr/bin/duplicity", line 1526, in with_tempdir 
    fn() 
    File "/usr/bin/duplicity", line 1380, in main 
    do_backup(action) 
    File "/usr/bin/duplicity", line 1508, in do_backup 
    incremental_backup(sig_chain) 
    File "/usr/bin/duplicity", line 662, in incremental_backup 
    globals.backend) 
    File "/usr/bin/duplicity", line 425, in write_multivol 
    at_end = gpg.GPGWriteFile(tarblock_iter, tdp.name, globals.gpg_profile, globals.volsize) 
    File "/usr/lib/python2.7/site-packages/duplicity/gpg.py", line 356, in GPGWriteFile 
    file.close() 
    File "/usr/lib/python2.7/site-packages/duplicity/gpg.py", line 241, in close 
    self.gpg_failed() 
    File "/usr/lib/python2.7/site-packages/duplicity/gpg.py", line 226, in gpg_failed 
    raise GPGError(msg) 
GPGError: GPG Failed, see log below: 
===== Begin GnuPG log ===== 
gpg: using "<supersecret>" as default secret key for signing 
gpg: signing failed: Not a tty 
gpg: [stdin]: sign+encrypt failed: Not a tty 
===== End GnuPG log ===== 

Diese Not a tty Fehler beim GPG zu unterzeichnen versucht seltsam ist.

Es schien vorher kein Problem zu sein, oder ich habe ein paar verrückte Eingaben in einer Nachtschicht gemacht, dass es einmal funktioniert hat, aber jetzt will es einfach nicht mehr funktionieren.

Antwort

1

Für alle, die aus dem gleichen Problem kämpft, ich die Antwort dank der developr von duply https://sourceforge.net/p/ftplicity/bugs/76/#74c5

Kurz gefunden, müssen Sie GPG_OPTS='--pinentry-mode loopback' beginnend mit GPG 2.1 und fügen Sie allow-loopback-pinentry-.gnupg/gpg-agent.conf

hinzufügen Dies brachte mich einem Arbeitsaufbau viel näher.

+0

Ich wurde entsperrt, indem ich die 'pinentry-mode' long-Option direkt zum' gpg'-Befehl selbst hinzufügte (musste die '* .conf'-Datei nicht modifizieren). Davor erhielt ich dieselbe Fehlermeldung "Not a tty". Danke für den Tipp! –