From fc06389f32264fa4d9d69fc76882c63b41b18300 Mon Sep 17 00:00:00 2001 From: Eike Ahmels Date: Tue, 12 Oct 2021 07:49:36 +0200 Subject: [PATCH] ci(docker): fixing docker systemctl problems and speed up builds process (#376) * Made service commands available through frontend * image fix, grammar fix * fixed suggestions bug, some cleanup from old editor, svg edge case * FIX: save a file with special characters * DOCU: new community theme, multi cam setup * FIX: docker systemctl workaround * fixed systemctl problem, added delay for simulavr * chore, removed unused stuff * bump * fixed olds paths and changed base image for faster builds --- .gitignore | 1 + docker-compose.yml | 10 ++--- docker/api/Dockerfile | 29 +++++++------ docker/api/run-api | 6 --- docker/api/start-api | 3 ++ docker/api/supervisord.conf | 38 +++++++++++++++++ docker/config/printer.cfg.example | 69 +------------------------------ 7 files changed, 62 insertions(+), 94 deletions(-) delete mode 100644 docker/api/run-api create mode 100644 docker/api/start-api create mode 100644 docker/api/supervisord.conf diff --git a/.gitignore b/.gitignore index 635094a5..faf412e9 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ docker/config/*.cfg docker/config/*.conf docker/config/.mainsail.json docker/config/.theme +.env diff --git a/docker-compose.yml b/docker-compose.yml index bfe2a148..02a21a61 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,16 +6,16 @@ services: dockerfile: api/Dockerfile image: mainsail-stack-api/1 volumes: - - ./docker/config:/home/node/printer_config - - ./docker/logs:/tmp/logs + - ./docker/config:/home/node/klipper_config + - ./docker/logs:/home/node/klipper_logs - ./docker/gcode:/home/node/gcode - ./docker/config/moonraker:/home/node/.moonraker_database container_name: ${APP_NAME}-stack-api ports: - - 7125:7125 + - "7125:7125" networks: - dev_net - application: + npm: build: context: ./docker dockerfile: Dockerfile @@ -24,7 +24,7 @@ services: - ./:/home/node/mainsail container_name: ${APP_NAME}-stack-npm ports: - - 8080:8080 + - "8080:8080" depends_on: - api networks: diff --git a/docker/api/Dockerfile b/docker/api/Dockerfile index c0f33c96..6a5dd48c 100644 --- a/docker/api/Dockerfile +++ b/docker/api/Dockerfile @@ -1,21 +1,17 @@ -FROM debian:buster AS base +FROM python:3-slim-buster AS base RUN groupadd --force -g 1000 node RUN useradd -ms /bin/bash --no-user-group -g 1000 -u 1000 node RUN apt-get update -RUN apt-get install -y sudo wget cmake swig git virtualenv python-dev libffi-dev build-essential libncurses-dev libusb-dev avrdude gcc-avr binutils-avr avr-libc dfu-util libnewlib-arm-none-eabi gcc-arm-none-eabi binutils-arm-none-eabi libusb-1.0 +RUN apt-get install -y sudo wget cmake swig git virtualenv python-dev libffi-dev \ + build-essential libncurses-dev libusb-dev avrdude gcc-avr binutils-avr avr-libc \ + dfu-util libnewlib-arm-none-eabi gcc-arm-none-eabi binutils-arm-none-eabi libusb-1.0 RUN mkdir /src WORKDIR /src RUN wget http://download.savannah.nongnu.org/releases/simulavr/libsim_1.1.0_amd64.deb RUN apt install /src/libsim_1.1.0_amd64.deb -#prebuild files for simulavr, not needed currently, because we just build the python lib later -#RUN wget http://download.savannah.nongnu.org/releases/simulavr/simulavr_1.1.0_amd64.deb -#RUN apt install /src/simulavr_1.1.0_amd64.deb -#RUN wget http://download.savannah.nongnu.org/releases/simulavr/python3-simulavr_1.1.0_amd64.deb -#RUN apt install /src/python3-simulavr_1.1.0_amd64.deb - RUN cat /etc/passwd RUN echo 'node ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/node && \ @@ -27,7 +23,7 @@ RUN ln -s /bin/true /bin/systemctl USER node WORKDIR /home/node -RUN git clone https://github.com/KevinOConnor/klipper +RUN git clone https://github.com/klipper3d/klipper WORKDIR /home/node/klipper COPY api/simulavr.config /home/node/klipper/.config RUN make @@ -46,7 +42,6 @@ RUN sed -E 's/check_klipper\(\)/check_klipper() { return 0; }\nold()/' /home/nod RUN chmod +x /home/node/moonraker/scripts/install-moonraker2.sh RUN /home/node/moonraker/scripts/install-moonraker2.sh -RUN sudo rm -f /bin/systemctl #restore backed up systemctl command #RUN sudo mv /bin/systemctl.bak /bin/systemctl @@ -54,13 +49,17 @@ WORKDIR /home/node/ RUN git clone https://git.savannah.nongnu.org/git/simulavr.git WORKDIR /home/node/simulavr RUN make python -RUN make build +RUN make build -j8 USER root +RUN rm /bin/systemctl -COPY api/run-api /usr/local/bin/run-api -RUN chmod +x /usr/local/bin/run-api +RUN apt-get -y install supervisor -USER node +RUN ln -s /usr/bin/supervisorctl /bin/systemctl -ENTRYPOINT ["run-api"] +RUN mkdir -p /var/log/supervisor +COPY api/supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY api/start-api /bin/start-api +RUN chmod +x /bin/start-api +ENTRYPOINT ["/bin/start-api"] diff --git a/docker/api/run-api b/docker/api/run-api deleted file mode 100644 index c82b6496..00000000 --- a/docker/api/run-api +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -PYTHONPATH="/home/node/simulavr/build/pysimulavr/" /home/node/klipper/scripts/avrsim.py -m atmega644 -s 20000000 -b 250000 /home/node/klipper/simulavr.elf & -/home/node/klippy-env/bin/python /home/node/klipper/klippy/klippy.py /home/node/printer_config/printer.cfg -l /tmp/logs/klippy.log -a /tmp/klippy_uds & -/home/node/moonraker-env/bin/python /home/node/moonraker/moonraker/moonraker.py -l /tmp/logs/moonraker.log -c /home/node/printer_config/moonraker.conf & -echo "Starting ..." >> /tmp/logs/klippy.log -tail -f /tmp/logs/klippy.log diff --git a/docker/api/start-api b/docker/api/start-api new file mode 100644 index 00000000..1211276b --- /dev/null +++ b/docker/api/start-api @@ -0,0 +1,3 @@ +#!/bin/bash +chown -hR node:node /home/node/klipper_logs +/usr/bin/supervisord \ No newline at end of file diff --git a/docker/api/supervisord.conf b/docker/api/supervisord.conf new file mode 100644 index 00000000..9f1fecb9 --- /dev/null +++ b/docker/api/supervisord.conf @@ -0,0 +1,38 @@ +[supervisord] +#logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) +logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) +logfile_backups=10 ; (num of main logfile rotation backups;default 10) +loglevel=info ; (log level;default info; others: debug,warn,trace) +pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) +nodaemon=true ; (start in foreground if true;default false) +minfds=1024 ; (min. avail startup file descriptors;default 1024) +minprocs=200 ; (min. avail process descriptors;default 200) + +[program:simulavr] +command=bash -c 'sleep 10 && /home/node/klipper/scripts/avrsim.py -m atmega644 -s 20000000 -b 250000 /home/node/klipper/simulavr.elf' +environment=PYTHONPATH=/home/node/simulavr/build/pysimulavr/ +user=node +process_name=simulavr +directory=/home/node +autostart=true +autorestart=true +redirect_stderr=true + +[program:klipper] +command=/home/node/klippy-env/bin/python /home/node/klipper/klippy/klippy.py /home/node/klipper_config/printer.cfg -l /home/node/klipper_logs/klippy.log -a /tmp/klippy_uds +user=node +process_name=klipper +directory=/home/node +autostart=true +autorestart=true +redirect_stderr=true + + +[program:moonraker] +command=/home/node/moonraker-env/bin/python /home/node/moonraker/moonraker/moonraker.py -l /home/node/klipper_logs/moonraker.log -c /home/node/klipper_config/moonraker.conf +user=node +process_name=moonraker +directory=/home/node +autostart=true +autorestart=true +redirect_stderr=true diff --git a/docker/config/printer.cfg.example b/docker/config/printer.cfg.example index 8848211e..b352a23d 100644 --- a/docker/config/printer.cfg.example +++ b/docker/config/printer.cfg.example @@ -6,7 +6,7 @@ path: ~/gcode [mcu] serial: /tmp/pseudoserial -pin_map: arduino +restart_method: arduino baud: 250000 [stepper_x] @@ -110,70 +110,3 @@ max_z_accel: 100 # G28 Y0 # G28 X0 # G28 Z0 - -[gcode_macro PAUSE] -rename_existing: BASE_PAUSE -default_parameter_X: 230 #edit to your park position -default_parameter_Y: 230 #edit to your park position -default_parameter_Z: 10 #edit to your park position -default_parameter_E: 1 #edit to your retract length -gcode: - SAVE_GCODE_STATE NAME=PAUSE_state - BASE_PAUSE - G91 - G1 E-{E} F2100 - G1 Z{Z} - G90 - G1 X{X} Y{Y} F6000 -[gcode_macro RESUME] -rename_existing: BASE_RESUME -default_parameter_E: 1 #edit to your retract length -gcode: - G91 - G1 E{E} F2100 - G90 - RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1 - BASE_RESUME -[gcode_macro CANCEL_PRINT] -rename_existing: BASE_CANCEL_PRINT -gcode: - TURN_OFF_HEATERS - CLEAR_PAUSE - SDCARD_RESET_FILE - BASE_CANCEL_PRINT - -[gcode_macro START_PRINT] -default_parameter_BED_TEMP: 103.3 -default_parameter_EXTRUDER_TEMP: 103.3 -gcode: -# Start bed heating - M140 S103.3 -# Use absolute coordinates - G90 -# Reset the G-Code Z offset (adjust Z offset if needed) - SET_GCODE_OFFSET Z=0.0 -# Home the printer - G28 -# Move the nozzle near the bed - G1 Z5 F3000 -# Move the nozzle very close to the bed - G1 Z0.15 F300 -# Wait for bed to reach temperature - M190 S103.3 -# Set and wait for nozzle to reach temperature - M109 S103.3 - -[gcode_macro END_PRINT] -gcode: -# Turn off bed, extruder, and fan - M140 S0 - M104 S0 - M106 S0 -# Move nozzle away from print while retracting - G91 - G1 X-2 Y-2 E-3 F300 -# Raise nozzle by 10mm - G1 Z10 F3000 - G90 -# Disable steppers - M84