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.
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! –