bonus-edge-proxy/docker/Dockerfile

90 lines
3.0 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# =================================================================
# 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/
USER dev
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
CMD ["/bin/bash"]