Cómo solucionar libretranslate docker PermissionError: [Errno 13] Permission denied: '/home/libretranslate/.local/share/argos-translate'

Problema

Al ejecutar el contenedor Docker de LibreTranslate, ves el siguiente error:

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'

Solución

El problema aquí es que estás montando directorios del sistema host en el contenedor Docker, y el usuario dentro del contenedor no tiene permiso para escribir en esos directorios.

Para solucionar esto, asumiendo la siguiente configuración:

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

crea los directorios y establece los permisos en el sistema host:

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

Echa un vistazo a artículos similares por categoría: Docker