mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-03-30 12:05:38 +00:00
- Enhanced docker-setup.sh to ensure device mappings are correctly moved from the volumes section to the devices section in Docker Compose files. - Added checks for serial device permissions and provided detailed instructions in DOCKER.md for resolving permission issues. - Updated Dockerfile to add the meshcore user to the dialout group for serial port access, improving compatibility with serial devices. - Improved logging functionality in core.py to handle log file paths more robustly, ensuring directories are created as needed and handling errors gracefully.
63 lines
1.9 KiB
Docker
63 lines
1.9 KiB
Docker
# Multi-stage build for meshcore-bot
|
|
FROM python:3.11-slim AS builder
|
|
|
|
# Install build dependencies (with cache mount for apt)
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Set working directory
|
|
WORKDIR /build
|
|
|
|
# Copy dependency files
|
|
COPY requirements.txt pyproject.toml ./
|
|
|
|
# Install Python dependencies (with cache mount for pip)
|
|
RUN --mount=type=cache,target=/root/.cache/pip \
|
|
pip install --user -r requirements.txt
|
|
|
|
# Final stage
|
|
FROM python:3.11-slim
|
|
|
|
# Install runtime dependencies (with cache mount for apt)
|
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
apt-get update && apt-get install -y --no-install-recommends \
|
|
# For serial port access
|
|
udev \
|
|
# For BLE support (optional, but commonly needed)
|
|
libbluetooth3 \
|
|
# Cleanup
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create non-root user and add to dialout group for serial port access
|
|
RUN useradd -m -u 1000 -G dialout,tty meshcore && \
|
|
mkdir -p /app /data/config /data/databases /data/logs /data/backups && \
|
|
chown -R meshcore:meshcore /app /data
|
|
|
|
# Copy Python dependencies from builder
|
|
COPY --from=builder /root/.local /home/meshcore/.local
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Copy application files
|
|
COPY --chown=meshcore:meshcore . /app/
|
|
|
|
# Set PATH to include user's local bin
|
|
ENV PATH=/home/meshcore/.local/bin:$PATH \
|
|
PYTHONUNBUFFERED=1 \
|
|
PYTHONDONTWRITEBYTECODE=1
|
|
|
|
# Switch to non-root user
|
|
USER meshcore
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
|
CMD python3 -c "import sys; sys.exit(0)" || exit 1
|
|
|
|
# Default command
|
|
CMD ["python3", "meshcore_bot.py", "--config", "/data/config/config.ini"]
|