bonus-edge-proxy/docker/dev/Dockerfile.bak2

79 lines
2.9 KiB
Docker
Raw Normal View History

2025-09-30 18:34:50 +08:00
# =================================================================
# Edge Proxy - Development Environment Dockerfile (V3 - Corrected)
2025-09-30 18:34:50 +08:00
# =================================================================
FROM arm64v8/ubuntu:22.04
# 1. 基础环境设置
# =================================
2025-09-30 18:34:50 +08:00
WORKDIR /app
ENV DEBIAN_FRONTEND=noninteractive
# 2. 用户和组创建
# 说明: 在这里创建所有需要的用户和组。
# 权限将在主机端设置而不是在Dockerfile中因为工作目录/app将被主机目录挂载覆盖。
# =================================
2025-10-13 13:55:15 +08:00
# =================================
RUN 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 && \
# 清理 apt 缓存
rm -rf /var/lib/apt/lists/*
RUN echo "umask 0002" > /etc/profile.d/99-shared-umask.sh && \
chmod +x /etc/profile.d/99-shared-umask.sh
# 3. 复制构建上下文并安装依赖
# 说明: 将整个项目复制到临时目录,用于编译 paho 等库。
# =================================
COPY . /tmp/build-context
2025-09-30 18:34:50 +08:00
RUN apt-get update && \
apt-get install -y --no-install-recommends \
2025-09-30 18:34:50 +08:00
build-essential \
cmake \
git \
gdb \
vim \
libssl-dev \
2025-09-30 18:34:50 +08:00
# spdlog 开发库
libspdlog-dev \
# Boost C++ 开发库 (元数据包)
2025-09-30 18:34:50 +08:00
libboost-all-dev && \
\
# --- 从源码编译并安装 Paho MQTT C 库 ---
echo "--- Building and installing Paho MQTT C Library ---" && \
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 && \
\
# --- 从源码编译并安装 Paho MQTT C++ 库 ---
echo "--- Building and installing Paho MQTT C++ Library ---" && \
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 && \
2025-09-30 18:34:50 +08:00
# 清理apt缓存减小镜像体积
rm -rf /var/lib/apt/lists/*
2025-10-13 13:55:15 +08:00
USER dev
# 4. (可选) 设置默认用户
# 说明: 如果不设置,默认是 root。如果希望容器启动后默认是某个用户可以取消下面的注释。
# 但对于 VSCode attach 来说,它会使用 devcontainer.json 中指定的 remoteUser所以此项不是必须的。
# USER forlinx
# CMD ["sleep", "infinity"]