如何修复 libretranslate docker PermissionError: [Errno 13] Permission denied: '/home/libretranslate/.local/share/argos-translate'

问题

运行 LibreTranslate Docker 容器时,你看到以下错误:

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'

解决方案

这里的问题是你在 Docker 容器中挂载了主机系统的目录,但容器内的用户没有权限写入这些目录。

为了修复此问题,假设以下配置:

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

在主机系统上创建目录并设置权限:

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