forked from rhasspy/larynx_old
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
122 lines (88 loc) · 3.68 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# -----------------------------------------------------------------------------
# Dockerfile for Larynx (https://github.com/rhasspy/larynx)
# Requires Docker buildx: https://docs.docker.com/buildx/working-with-buildx/
# See scripts/build-docker.sh
#
# The IFDEF statements are handled by docker/preprocess.sh. These are just
# comments that are uncommented if the environment variable after the IFDEF is
# not empty.
#
# The build-docker.sh script will optionally add apt/pypi proxies running locally:
# * apt - https://docs.docker.com/engine/examples/apt-cacher-ng/
# * pypi - https://github.com/jayfk/docker-pypi-cache
# -----------------------------------------------------------------------------
FROM debian:buster-slim as build-debian
ENV LANG C.UTF-8
# IFDEF PROXY
#! RUN echo 'Acquire::http { Proxy "http://${APT_PROXY_HOST}:${APT_PROXY_PORT}"; };' >> /etc/apt/apt.conf.d/01proxy
# ENDIF
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install --yes --no-install-recommends \
python3 python3-pip python3-venv python3-dev \
build-essential
# -----------------------------------------------------------------------------
FROM build-debian as build-amd64
FROM build-debian as build-armv7
RUN apt-get install --no-install-recommends --yes \
llvm-7-dev libatlas-base-dev libopenblas-dev gfortran \
libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev \
libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk \
libharfbuzz-dev libfribidi-dev libxcb1-dev
ENV LLVM_CONFIG=/usr/bin/llvm-config-7
FROM build-debian as build-arm64
RUN apt-get install --no-install-recommends --yes \
llvm-7-dev libatlas-base-dev libopenblas-dev gfortran \
libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev \
libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk \
libharfbuzz-dev libfribidi-dev libxcb1-dev
ENV LLVM_CONFIG=/usr/bin/llvm-config-7
# -----------------------------------------------------------------------------
ARG TARGETARCH
ARG TARGETVARIANT
FROM build-$TARGETARCH$TARGETVARIANT as build
# IFDEF PYPI
#! ENV PIP_INDEX_URL=http://${PYPI_PROXY_HOST}:${PYPI_PROXY_PORT}/simple/
#! ENV PIP_TRUSTED_HOST=${PYPI_PROXY_HOST}
# ENDIF
COPY requirements.txt /app/
COPY scripts/create-venv.sh /app/scripts/
COPY TTS/ /app/TTS/
RUN cd /app && \
export stage=0 end_stage=0 && \
scripts/create-venv.sh
COPY download/ /app/download/
# Install app
RUN cd /app && \
export PIP_INSTALL='install -f /app/download' && \
export SETUP_DEVELOP='-f /app/download' && \
export PIP_PREINSTALL_PACKAGES='numpy==1.19.0 scipy==1.5.1 grpcio==1.32.0' && \
scripts/create-venv.sh
# -----------------------------------------------------------------------------
FROM debian:buster-slim as run
ENV LANG C.UTF-8
# IFDEF PROXY
#! RUN echo 'Acquire::http { Proxy "http://${PROXY}"; };' >> /etc/apt/apt.conf.d/01proxy
# ENDIF
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install --yes --no-install-recommends \
python3 python3-distutils python3-llvmlite libpython3.7 \
libsndfile1 libgomp1 libatlas3-base libgfortran4 libopenblas-base \
libjpeg8 libopenjp2-7 libtiff5 libxcb1 \
libnuma1
# Remove proxy
# IFDEF PROXY
#! RUN rm -f /etc/apt/apt.conf.d/01proxy
# ENDIF
# Copy virtual environment
COPY --from=build /app/.venv/ /app/.venv/
# Copy TTS with compiled extension
COPY --from=build /app/TTS/ /app/TTS/
# Copy other files
COPY larynx/ /app/larynx/
# Need this since we installed numba as root but will be running as a regular user
ENV NUMBA_CACHE_DIR=/tmp
WORKDIR /app
EXPOSE 5002
ENTRYPOINT ["/app/.venv/bin/python3", "-m", "larynx", "serve"]