Wie man libretranslate docker PermissionError behebt: [Errno 13] Permission denied: '/home/libretranslate/.local/share/argos-translate'

Problem

Beim Ausführen des LibreTranslate Docker-Containers sehen Sie den folgenden Fehler:

libretranslate_traceback.txt
Traceback (most recent call last):
  File "/app/./venv/bin/libretranslate", line 5, in <module>
    from libretranslate.main import main
  File "/app/venv/lib/python3.11/site-packages/libretranslate/__init__.py", line 2, in <module>
    from .main import main
  File "/app/venv/lib/python3.11/site-packages/libretranslate/main.py", line 5, in <module>
    from libretranslate.app import create_app
  File "/app/venv/lib/python3.11/site-packages/libretranslate/app.py", line 12, in <module>
    import argostranslatefiles
  File "/app/venv/lib/python3.11/site-packages/argostranslatefiles/__init__.py", line 1, in <module>
    from argostranslatefiles.argostranslatefiles import *
  File "/app/venv/lib/python3.11/site-packages/argostranslatefiles/argostranslatefiles.py", line 1, in <module>
    from argostranslate.translate import ITranslation
  File "/app/venv/lib/python3.11/site-packages/argostranslate/translate.py", line 10, in <module>
    from argostranslate import apis, fewshot, package, sbd, settings
  File "/app/venv/lib/python3.11/site-packages/argostranslate/package.py", line 13, in <module>
    from argostranslate import networking, settings
  File "/app/venv/lib/python3.11/site-packages/argostranslate/networking.py", line 6, in <module>
    from argostranslate.utils import error, info
  File "/app/venv/lib/python3.11/site-packages/argostranslate/utils.py", line 4, in <module>
    from argostranslate import settings
  File "/app/venv/lib/python3.11/site-packages/argostranslate/settings.py", line 19, in <module>
    os.makedirs(data_dir, exist_ok=True)
  File "<frozen os>", line 225, in makedirs
PermissionError: [Errno 13] Permission denied: '/home/libretranslate/.local/share/argos-translate'

Lösung

Das Problem hier ist, dass Sie Verzeichnisse vom Host-System in den Docker-Container mounten und der Benutzer im Container keine Berechtigung hat, in diese Verzeichnisse zu schreiben.

Um dies zu beheben, assuming die folgende Konfiguration:

docker-compose.libretranslate.yml
services:
  libretranslate:
    image: libretranslate/libretranslate
    container_name: libretranslate
    ports:
      - "5000:5000"
    volumes:
      - ./libretranslate_data:/home/libretranslate/.local/share
      - ./libretranslate_cache:/home/libretranslate/.local/cache

erstellen Sie die Verzeichnisse und setzen Sie die Berechtigungen auf dem Host-System:

prepare_libretranslate_dirs.sh
mkdir -p ./libretranslate_data ./libretranslate_cache
sudo chown -R 1032:nogroup ./libretranslate_data ./libretranslate_cache

Check out similar posts by category: Docker