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

79 lines
2.9 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 - Development Environment Dockerfile (V3 - Corrected)
# =================================================================
FROM arm64v8/ubuntu:22.04
# 1. 基础环境设置
# =================================
WORKDIR /app
ENV DEBIAN_FRONTEND=noninteractive
# 2. 用户和组创建
# 说明: 在这里创建所有需要的用户和组。
# 权限将在主机端设置而不是在Dockerfile中因为工作目录/app将被主机目录挂载覆盖。
# =================================
# =================================
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
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
gdb \
vim \
libssl-dev \
# spdlog 开发库
libspdlog-dev \
# Boost C++ 开发库 (元数据包)
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 && \
# 清理apt缓存减小镜像体积
rm -rf /var/lib/apt/lists/*
USER dev
# 4. (可选) 设置默认用户
# 说明: 如果不设置,默认是 root。如果希望容器启动后默认是某个用户可以取消下面的注释。
# 但对于 VSCode attach 来说,它会使用 devcontainer.json 中指定的 remoteUser所以此项不是必须的。
# USER forlinx
# CMD ["sleep", "infinity"]