diff --git a/docker/arm.Dockerfile b/docker/arm.Dockerfile new file mode 100644 index 0000000..f60c8ad --- /dev/null +++ b/docker/arm.Dockerfile @@ -0,0 +1,43 @@ +FROM arm64v8/python:3.10.10-slim-bullseye as builder + +WORKDIR /app + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update -qq \ + && apt-get -qqq install --no-install-recommends -y pkg-config gcc g++ \ + && apt-get upgrade --assume-yes \ + && apt-get clean \ + && rm -rf /var/lib/apt + +RUN python -mvenv venv && ./venv/bin/pip install --no-cache-dir --upgrade pip + +COPY . . + +# Install package from source code, compile translations +RUN ./venv/bin/pip install Babel==2.12.1 && ./venv/bin/python scripts/compile_locales.py \ + && ./venv/bin/pip install torch==2.0.1 --extra-index-url https://download.pytorch.org/whl/cpu \ + && ./venv/bin/pip install . \ + && ./venv/bin/pip cache purge + +FROM arm64v8/python:3.10.10-slim-bullseye + +ARG with_models=false +ARG models="" + +RUN addgroup --system --gid 1032 libretranslate && adduser --system --uid 1032 libretranslate && mkdir -p /home/libretranslate/.local && chown -R libretranslate:libretranslate /home/libretranslate/.local +USER libretranslate + +COPY --from=builder --chown=1032:1032 /app /app +WORKDIR /app + +RUN if [ "$with_models" = "true" ]; then \ + # initialize the language models + if [ ! -z "$models" ]; then \ + ./venv/bin/python scripts/install_models.py --load_only_lang_codes "$models"; \ + else \ + ./venv/bin/python scripts/install_models.py; \ + fi \ + fi + +EXPOSE 5000 +ENTRYPOINT [ "./venv/bin/libretranslate", "--host", "0.0.0.0" ]