| |
|
|
| ARG BASE_IMAGE=ubuntu:20.04 |
| ARG BASE_RUNTIME_IMAGE=$BASE_IMAGE |
|
|
| |
| FROM ${BASE_IMAGE} AS download-core-env |
| ARG DEBIAN_FRONTEND=noninteractive |
|
|
| WORKDIR /work |
|
|
| RUN <<EOF |
| set -eux |
|
|
| apt-get update |
| apt-get install -y \ |
| wget \ |
| unzip |
| apt-get clean |
| rm -rf /var/lib/apt/lists/* |
| EOF |
|
|
| |
| ARG TARGETPLATFORM |
| ARG USE_GPU=false |
| ARG VOICEVOX_CORE_VERSION=0.14.3 |
|
|
| RUN <<EOF |
| set -eux |
|
|
| |
| if [ "${USE_GPU}" = "true" ]; then |
| VOICEVOX_CORE_ASSET_ASSET_PROCESSING="gpu" |
| else |
| VOICEVOX_CORE_ASSET_ASSET_PROCESSING="cpu" |
| fi |
|
|
| |
| if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then |
| VOICEVOX_CORE_ASSET_TARGETARCH="x64" |
| else |
| VOICEVOX_CORE_ASSET_TARGETARCH="arm64" |
| fi |
|
|
| VOICEVOX_CORE_ASSET_PREFIX="voicevox_core-linux-${VOICEVOX_CORE_ASSET_TARGETARCH}-${VOICEVOX_CORE_ASSET_ASSET_PROCESSING}" |
|
|
| |
| VOICEVOX_CORE_ASSET_NAME=${VOICEVOX_CORE_ASSET_PREFIX}-${VOICEVOX_CORE_VERSION} |
| wget -nv --show-progress -c -O "./${VOICEVOX_CORE_ASSET_NAME}.zip" "https://github.com/VOICEVOX/voicevox_core/releases/download/${VOICEVOX_CORE_VERSION}/${VOICEVOX_CORE_ASSET_NAME}.zip" |
| unzip "./${VOICEVOX_CORE_ASSET_NAME}.zip" |
| mkdir -p core |
| mv "${VOICEVOX_CORE_ASSET_NAME}"/* core |
| rm -rf $VOICEVOX_CORE_ASSET_NAME |
| rm "./${VOICEVOX_CORE_ASSET_NAME}.zip" |
|
|
| |
| mkdir /opt/voicevox_core |
| mv ./core/* /opt/voicevox_core/ |
|
|
| |
| echo "/opt/voicevox_core" > /etc/ld.so.conf.d/voicevox_core.conf |
|
|
| |
| ldconfig |
| EOF |
|
|
|
|
| |
| FROM ${BASE_IMAGE} AS download-onnxruntime-env |
| ARG DEBIAN_FRONTEND=noninteractive |
|
|
| WORKDIR /work |
|
|
| RUN <<EOF |
| set -eux |
|
|
| apt-get update |
| apt-get install -y \ |
| wget \ |
| tar |
| apt-get clean |
| rm -rf /var/lib/apt/lists/* |
| EOF |
|
|
| ARG TARGETPLATFORM |
| ARG USE_GPU=false |
| ARG ONNXRUNTIME_VERSION=1.13.1 |
| RUN <<EOF |
| set -eux |
|
|
| |
| if [ "${USE_GPU}" = "true" ]; then |
| ONNXRUNTIME_PROCESSING="gpu-" |
| else |
| ONNXRUNTIME_PROCESSING="" |
| fi |
|
|
| |
| if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then |
| ONNXRUNTIME_TARGETARCH=x64 |
| else |
| ONNXRUNTIME_TARGETARCH=aarch64 |
| fi |
| |
| ONNXRUNTIME_URL="https://github.com/microsoft/onnxruntime/releases/download/v${ONNXRUNTIME_VERSION}/onnxruntime-linux-${ONNXRUNTIME_TARGETARCH}-${ONNXRUNTIME_PROCESSING}${ONNXRUNTIME_VERSION}.tgz" |
|
|
| |
| wget -nv --show-progress -c -O "./onnxruntime.tgz" "${ONNXRUNTIME_URL}" |
|
|
| |
| mkdir -p /opt/onnxruntime |
| tar xf "./onnxruntime.tgz" -C "/opt/onnxruntime" --strip-components 1 |
| rm ./onnxruntime.tgz |
|
|
| |
| echo "/opt/onnxruntime/lib" > /etc/ld.so.conf.d/onnxruntime.conf |
|
|
| |
| ldconfig |
| EOF |
|
|
|
|
| |
| FROM ${BASE_IMAGE} AS compile-python-env |
|
|
| ARG DEBIAN_FRONTEND=noninteractive |
|
|
| RUN <<EOF |
| set -eux |
| apt-get update |
| apt-get install -y \ |
| build-essential \ |
| libssl-dev \ |
| zlib1g-dev \ |
| libbz2-dev \ |
| libreadline-dev \ |
| libsqlite3-dev \ |
| curl \ |
| libncursesw5-dev \ |
| xz-utils \ |
| tk-dev \ |
| libxml2-dev \ |
| libxmlsec1-dev \ |
| libffi-dev \ |
| liblzma-dev \ |
| git |
| apt-get clean |
| rm -rf /var/lib/apt/lists/* |
| EOF |
|
|
| ARG PYTHON_VERSION=3.11.3 |
| ARG PYENV_VERSION=v2.3.17 |
| ARG PYENV_ROOT=/tmp/.pyenv |
| ARG PYBUILD_ROOT=/tmp/python-build |
| RUN <<EOF |
| set -eux |
|
|
| git clone -b "${PYENV_VERSION}" https://github.com/pyenv/pyenv.git "$PYENV_ROOT" |
| PREFIX="$PYBUILD_ROOT" "$PYENV_ROOT"/plugins/python-build/install.sh |
| "$PYBUILD_ROOT/bin/python-build" -v "$PYTHON_VERSION" /opt/python |
|
|
| rm -rf "$PYBUILD_ROOT" "$PYENV_ROOT" |
| EOF |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| |
| FROM ${BASE_RUNTIME_IMAGE} AS runtime-env |
| ARG DEBIAN_FRONTEND=noninteractive |
|
|
| WORKDIR /opt/voicevox_engine |
|
|
| |
| |
| |
| RUN <<EOF |
| set -eux |
|
|
| apt-get update |
| apt-get install -y \ |
| git \ |
| wget \ |
| cmake \ |
| libsndfile1 \ |
| ca-certificates \ |
| build-essential \ |
| gosu |
| apt-get clean |
| rm -rf /var/lib/apt/lists/* |
|
|
| |
| useradd --create-home user |
| EOF |
|
|
| |
| COPY --from=compile-python-env /opt/python /opt/python |
|
|
| |
| ADD ./requirements.txt /tmp/ |
| RUN <<EOF |
| |
| gosu user /opt/python/bin/pip3 install -r /tmp/requirements.txt |
| EOF |
|
|
| |
| |
| COPY --from=download-core-env /opt/voicevox_core /opt/voicevox_core |
|
|
| |
| |
| COPY --from=download-onnxruntime-env /opt/onnxruntime /opt/onnxruntime |
|
|
| |
| ADD ./voicevox_engine /opt/voicevox_engine/voicevox_engine |
| ADD ./docs /opt/voicevox_engine/docs |
| ADD ./run.py ./generate_licenses.py ./presets.yaml ./default.csv ./default_setting.yml ./engine_manifest.json /opt/voicevox_engine/ |
| ADD ./speaker_info /opt/voicevox_engine/speaker_info |
| ADD ./ui_template /opt/voicevox_engine/ui_template |
| ADD ./engine_manifest_assets /opt/voicevox_engine/engine_manifest_assets |
|
|
| |
| ARG VOICEVOX_ENGINE_VERSION=latest |
| RUN sed -i "s/__version__ = \"latest\"/__version__ = \"${VOICEVOX_ENGINE_VERSION}\"/" /opt/voicevox_engine/voicevox_engine/__init__.py |
| RUN sed -i "s/\"version\": \"999\\.999\\.999\"/\"version\": \"${VOICEVOX_ENGINE_VERSION}\"/" /opt/voicevox_engine/engine_manifest.json |
|
|
| |
| ADD ./requirements-license.txt /tmp/ |
| RUN <<EOF |
| set -eux |
|
|
| cd /opt/voicevox_engine |
|
|
| |
| |
| export PATH="/home/user/.local/bin:${PATH:-}" |
|
|
| gosu user /opt/python/bin/pip3 install -r /tmp/requirements-license.txt |
| gosu user /opt/python/bin/python3 generate_licenses.py > /opt/voicevox_engine/engine_manifest_assets/dependency_licenses.json |
| cp /opt/voicevox_engine/engine_manifest_assets/dependency_licenses.json /opt/voicevox_engine/licenses.json |
| EOF |
|
|
| |
| RUN <<EOF |
| set -eux |
|
|
| |
| |
| for i in $(seq 5); do |
| EXIT_CODE=0 |
| gosu user /opt/python/bin/python3 -c "import pyopenjtalk; pyopenjtalk._lazy_init()" || EXIT_CODE=$? |
| if [ "$EXIT_CODE" = "0" ]; then |
| break |
| fi |
| sleep 5 |
| done |
|
|
| if [ "$EXIT_CODE" != "0" ]; then |
| exit "$EXIT_CODE" |
| fi |
| EOF |
|
|
| |
| ARG VOICEVOX_RESOURCE_VERSION=0.14.3-preview.1 |
| RUN <<EOF |
| set -eux |
|
|
| |
| wget -nv --show-progress -c -O "/opt/voicevox_engine/README.md" "https://raw.githubusercontent.com/VOICEVOX/voicevox_resource/${VOICEVOX_RESOURCE_VERSION}/engine/README.md" |
| EOF |
|
|
| |
| COPY --chmod=775 <<EOF /entrypoint.sh |
| |
| set -eux |
|
|
| |
| cat /opt/voicevox_engine/README.md > /dev/stderr |
|
|
| exec "\$@" |
| EOF |
| USER user |
| ENTRYPOINT [ "/entrypoint.sh" ] |
| CMD [ "/opt/python/bin/python3", "./run.py", "--voicelib_dir", "/opt/voicevox_core/", "--runtime_dir", "/opt/onnxruntime/lib", "--host", "0.0.0.0","--port","7860" ] |
|
|