bonus-edge-proxy/docker/Dockerfile

89 lines
2.9 KiB
Docker
Raw Normal View History

2025-10-13 13:55:15 +08:00
# =================================================================
# 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 \
2025-10-15 14:27:21 +08:00
# Piper TTS 所需的系统库
espeak-ng-data \
libespeak1 \
python3 \
python3-pip \
2025-10-13 13:55:15 +08:00
# 开发库
libssl-dev \
libspdlog-dev \
libsqlite3-dev \
2025-10-13 13:55:15 +08:00
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/*
2025-10-15 14:27:21 +08:00
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 设置为加载环境然后执行一个命令,或者留空让用户交互。
2025-10-13 13:55:15 +08:00
# 5. 设置默认用户
# =================================
# 容器的默认用户将是 'dev'
2025-10-15 14:27:21 +08:00
USER dev