将indextts封装到docker容器中

前段时间学习了b站开源的index-tts代码,在本地测试了一下,发现macbook也可以正常使用,只是安装组件时老是有问题,为了方便后面使用,我想将这个封装到docker容器中,于这就是出现了很多的问题原因,每个问题都问了一下trae,大部分的答案都是答非所问,但它在自动生成代码方面确实不要太舒服了。

效果

docker

正如Docker他们宣传的一样: 镜像本质是跨平台的文件系统打包 ,其兼容性主要与硬件架构 (而非具体设备如 MacBook)相关,但是他们后面又加了一下:不过,由于 MacBook 分为 Intel 芯片(x86_64/amd64 架构)Apple Silicon 芯片(ARM64 架构,如 M1/M2/M3) ,选择镜像时需要注意架构兼容性 。 其本质就是说我的架构同硬件没有关系,只是组件他们不支持兼容而已,大家都知道做硬件的总是希望软件来支持,做平台的总是期望软件来自适配,而不是他们自已本身的改动来适配

镜像选择

对于python的镜像,其实有很多,我试过了slim (精简版 Debian/Ubuntu),alpine(Alpine linux轻量版),但无一都是失败的,主要都是在安装WeTextProcessing及其它各种组件时出现c库的冲突。

C库的影响

1,找不到No module named 'tn',这里的tn是WeTextProcessing组件安装后生成了,不是真实的tn组件 2,还有安装WeTextProcessing时c库一直出错

总结

下面是我解决问题的一种方式,重新读了一下indextts库的readme,他们这种就是使用conda来安装大部分的组件,那我是不是应当找一个conda管理的镜像包呢,于是就找到了

dockerfile 复制代码
# 使用Miniconda3作为基础镜像

FROM continuumio/miniconda3:latest

在安装WeTextProcessing时,加上了--no-deps参数

dockerfile 复制代码
RUN /bin/bash -c "source activate py310 && \

pip install WeTextProcessing --no-deps -i https://pypi.tuna.tsinghua.edu.cn/simple \

--trusted-host pypi.tuna.tsinghua.edu.cn --timeout 180"

总的dockerfile文件如下

dockerfile 复制代码
# 使用官方Python镜像作为基础,标签含 "alpine", 明确基于Alpine系统

# 使用Miniconda3作为基础镜像

FROM continuumio/miniconda3:latest

  


# 设置工作目录

WORKDIR /app

  


# 安装系统依赖

RUN apt-get update && apt-get install -y --no-install-recommends \

gcc \

g++ \

make \

git \

libfst-dev \

ffmpeg \

&& rm -rf /var/lib/apt/lists/*

  


# 创建Python 3.10环境

RUN conda create -n py310 python=3.10 -y

  


# 安装Cython(pynini依赖)

RUN /bin/bash -c "source activate py310 && \

pip install -i https://mirrors.aliyun.com/pypi/simple \

--trusted-host mirrors.aliyun.com \

Cython"

  


# 安装pynini (使用已知兼容的2.1.6.post1版本)并配置conda缓存和国内镜像源

RUN /bin/bash -c "source activate py310 && \

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ && \

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \

conda config --set show_channel_urls yes && \

conda config --set always_yes yes --set changeps1 no && \

conda config --set channel_priority strict && \

conda install -c conda-forge pynini==2.1.6.post1"


# 复制requirements.txt文件

COPY requirements.txt .

  


# 安装Python依赖

# 先安装指定版本的torch以避免哈希值不匹配问题

# 使用阿里云镜像源来替代清华源,解决403 Forbidden问题

RUN /bin/bash -c "source activate py310 && \

pip install torch==2.0.1 --index-url https://download.pytorch.org/whl/cu118 --timeout 180"

  


# 然后安装剩余依赖

RUN /bin/bash -c "source activate py310 && \

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ && \

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \

conda config --set show_channel_urls yes && \

conda config --set always_yes yes --set changeps1 no && \

conda config --set channel_priority strict && \

conda install -c conda-forge importlib_resources "

  
  
  


RUN /bin/bash -c "source activate py310 && \

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple \

--trusted-host pypi.tuna.tsinghua.edu.cn --timeout 180"

RUN /bin/bash -c "source activate py310 && \

pip install WeTextProcessing --no-deps -i https://pypi.tuna.tsinghua.edu.cn/simple \

--trusted-host pypi.tuna.tsinghua.edu.cn --timeout 180"

# 复制项目文件

COPY . .

  


# 创建非root用户

RUN useradd -m appuser

  


# 修改文件所有权

RUN chown -R appuser:appuser /app

  


# 切换到非root用户

USER appuser

  


# 暴露Gradio默认端口

EXPOSE 7861

  


# 运行Gradio应用

CMD ["/bin/bash", "-c", "source activate py310 && python gradio_frontend.py"]
相关推荐
提子拌饭1335 小时前
风息时钟:鸿蒙Flutter 实现的自然风格时钟应用
flutter·华为·架构·开源·harmonyos
科技小花8 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
2501_948114248 小时前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
FserSuN8 小时前
LangChain DeepAgent 多 Agent 架构原理学习
架构·langchain
坏孩子的诺亚方舟8 小时前
RTL设计师攻略0_架构与微架构
架构·cpu·面试攻略
智星云算力9 小时前
本地GPU与租用GPU混合部署:混合算力架构搭建指南
人工智能·架构·gpu算力·智星云·gpu租用
熊猫钓鱼>_>10 小时前
从“流程固化“到“意图驱动“:大模型调智能体调Skill架构深度解析
ai·架构·大模型·llm·agent·skill·openclaw
Agent产品评测局11 小时前
互联网行业自动化平台选型,运营全流程提效指南:2026企业级智能体架构与实战全解析
运维·人工智能·ai·chatgpt·架构·自动化
AI成长日志12 小时前
【AI原生开发实战】1.2 传统开发 vs AI原生开发:思维转变与架构差异
服务器·架构·ai-native
戮戮12 小时前
Spring Cloud Gateway 零拷贝参数校验:一种高性能网关架构实践
java·网络·架构·gateway