89 lines
2.9 KiB
Docker
89 lines
2.9 KiB
Docker
# =================================================================
|
||
# Edge Proxy - 开发环境 Dockerfile (V6 - 修正版)
|
||
# =================================================================
|
||
|
||
FROM arm64v8/ubuntu:22.04
|
||
|
||
# 1. 基础环境设置
|
||
# =================================
|
||
WORKDIR /app
|
||
ENV DEBIAN_FRONTEND=noninteractive
|
||
|
||
# 2. 安装依赖、创建用户和组
|
||
# 将所有系统级操作合并到一层,以减少镜像大小和构建时间
|
||
# =================================
|
||
RUN apt-get update && \
|
||
apt-get install -y --no-install-recommends \
|
||
# 基础工具
|
||
sudo \
|
||
build-essential \
|
||
cmake \
|
||
git \
|
||
gdb \
|
||
vim \
|
||
# Piper TTS 所需的系统库
|
||
espeak-ng-data \
|
||
libespeak1 \
|
||
python3 \
|
||
python3-pip \
|
||
# 开发库
|
||
libssl-dev \
|
||
libspdlog-dev \
|
||
libsqlite3-dev \
|
||
libboost-all-dev && \
|
||
\
|
||
# --- 用户和组创建 ---
|
||
groupadd -r developers && \
|
||
# 创建 'dev' 用户,将其主组设置为 'developers',并添加到 'sudo' 组
|
||
useradd -ms /bin/bash -g developers -G sudo dev && \
|
||
# 添加用户到 'dialout' 组 (GID 20) 以便访问串口设备
|
||
# `|| true` 用于防止在 GID 已存在时出错
|
||
groupadd -g 20 dialout || true && \
|
||
usermod -a -G dialout dev && \
|
||
# 为 'dev' 用户设置无密码 sudo
|
||
echo "dev ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/dev-nopasswd
|
||
|
||
# 3. 权限和协作设置
|
||
# =================================
|
||
# 为所有用户设置 umask 为 0002,这样新创建的文件权限默认为 664 (rw-rw-r--)
|
||
RUN echo "umask 0002" > /etc/profile.d/99-shared-umask.sh && \
|
||
chmod +x /etc/profile.d/99-shared-umask.sh
|
||
|
||
# 4. 编译并安装第三方库
|
||
# =================================
|
||
# [cite_start]将整个项目复制到临时目录,用于编译 paho 等库 [cite: 4]
|
||
COPY . /tmp/build-context
|
||
|
||
RUN cd /tmp/build-context/external/paho.mqtt.c && \
|
||
cmake -Bbuild -H. \
|
||
-DPAHO_WITH_SSL=ON \
|
||
-DPAHO_BUILD_SAMPLES=OFF \
|
||
-DPAHO_BUILD_DOCUMENTATION=OFF && \
|
||
cmake --build build --target install && \
|
||
\
|
||
cd /tmp/build-context/external/paho.mqtt.cpp && \
|
||
cmake -Bbuild -H. \
|
||
-DPAHO_WITH_SSL=ON \
|
||
-DPAHO_BUILD_SAMPLES=OFF \
|
||
-DPAHO_BUILD_DOCUMENTATION=OFF && \
|
||
cmake --build build --target install && \
|
||
\
|
||
# --- 清理工作 ---
|
||
ldconfig && \
|
||
rm -rf /tmp/build-context && \
|
||
# 在所有 apt 操作完成后,最后进行清理
|
||
rm -rf /var/lib/apt/lists/*
|
||
COPY piper_models/ /app/piper_models/
|
||
|
||
RUN pip install --no-cache-dir --user piper-tts
|
||
# 将 ~/.local/bin (包含 piper 二进制文件) 添加到 PATH
|
||
RUN echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bash_profile
|
||
# 现在,dev 用户可以使用 `piper` 命令了,只要 shell 环境被正确加载。
|
||
# 我们可以将最终的 CMD 设置为加载环境然后执行一个命令,或者留空让用户交互。
|
||
|
||
# 5. 设置默认用户
|
||
# =================================
|
||
# 容器的默认用户将是 'dev'
|
||
USER dev
|
||
|