diff --git a/docker-compose.yml b/docker-compose.yml index 97a57694..f1c4d4e2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,19 +1,31 @@ version: "3.8" services: + api: + build: + context: ./docker + dockerfile: api/Dockerfile + image: mainsail-stack-api/1 + volumes: + - ./docker/config:/home/node/printer_config + - ./docker/logs:/tmp/logs + - ./docker/gcode:/home/node/gcode + container_name: ${APP_NAME}-stack-api + ports: + - 7125:7125 + networks: + - dev_net application: build: context: ./docker dockerfile: Dockerfile - image: mainsail-stack/1 + image: mainsail-stack-npm/1 volumes: - ./:/home/node/mainsail - - ./docker/config:/home/node/printer_config - - ./docker/logs:/tmp/logs - - ./docker/gcode:/home/node/gcode - container_name: ${APP_NAME}-stack + container_name: ${APP_NAME}-stack-npm ports: - 8080:8080 - - 7125:7125 + depends_on: + - api networks: - dev_net networks: diff --git a/docker/Dockerfile b/docker/Dockerfile index 5d74c9ab..9df71a89 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,69 +1,12 @@ FROM node:buster AS base -RUN apt-get update -RUN apt-get install -y sudo 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 -#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 - -COPY start-container /usr/local/bin/start-container -RUN chmod +x /usr/local/bin/start-container -RUN echo 'node ALL=(ALL:ALL) NOPASSWD: ALL' > /etc/sudoers.d/node && \ - chown node:node -R ./ -RUN ln -s /bin/true /bin/systemctl -USER node -WORKDIR /home/node -RUN git clone https://github.com/Arksine/moonraker -WORKDIR /home/node/moonraker -RUN sed -E 's/check_klipper\(\)/check_klipper() { return 0; }\nold()/' /home/node/moonraker/scripts/install-moonraker.sh > /home/node/moonraker/scripts/install-moonraker2.sh -RUN chmod +x /home/node/moonraker/scripts/install-moonraker2.sh -RUN /home/node/moonraker/scripts/install-moonraker2.sh -WORKDIR /home/node -RUN git clone https://github.com/KevinOConnor/klipper -WORKDIR /home/node/klipper -COPY simulavr.config /home/node/klipper/.config -RUN make -RUN cp /home/node/klipper/out/klipper.elf /home/node/klipper/simulavr.elf -RUN rm /home/node/klipper/.config -COPY linux.config /home/node/klipper/.config -RUN make clean -RUN make - -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 groupadd --force -g 1000 pi -#RUN useradd -ms /bin/bash --no-user-group -g 1000 -u 1000 pi - - -RUN chmod +x /home/node/klipper/scripts/install-debian.sh -RUN /home/node/klipper/scripts/install-debian.sh -RUN sudo rm -f /bin/systemctl - -FROM base - -#RUN mkdir /home/node/printer_config -#RUN mkdir /home/node/gcode - - EXPOSE 8080 +COPY start-npm /usr/local/bin/start-npm +RUN chmod +x /usr/local/bin/start-npm -#COPY config/printer.cfg /home/node/printer_config/printer.cfg -#COPY config/moonraker.conf /home/node/printer_config/moonraker.conf - -#RUN sudo chown node:node -hR /home/node/printer_config -#RUN sudo chown node:node -hR /home/node/gcode -#RUN sudo chown node:node -hR /tmp/logs +USER node WORKDIR /home/node/mainsail -ENTRYPOINT ["start-container"] +ENTRYPOINT ["start-npm"] diff --git a/docker/api/Dockerfile b/docker/api/Dockerfile new file mode 100644 index 00000000..c593ee1b --- /dev/null +++ b/docker/api/Dockerfile @@ -0,0 +1,62 @@ +FROM debian: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 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 +#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 && \ + chown node:node -R ./ +#RUN mv /bin/systemctl /bin/systemctl.bak +RUN ln -s /bin/true /bin/systemctl + +USER node + +WORKDIR /home/node +RUN git clone https://github.com/KevinOConnor/klipper +WORKDIR /home/node/klipper +COPY api/simulavr.config /home/node/klipper/.config +RUN make +RUN cp /home/node/klipper/out/klipper.elf /home/node/klipper/simulavr.elf +RUN rm /home/node/klipper/.config +COPY api/linux.config /home/node/klipper/.config +RUN make clean +RUN make +RUN chmod +x /home/node/klipper/scripts/install-debian.sh +RUN /home/node/klipper/scripts/install-debian.sh + +WORKDIR /home/node +RUN git clone https://github.com/Arksine/moonraker +WORKDIR /home/node/moonraker +RUN sed -E 's/check_klipper\(\)/check_klipper() { return 0; }\nold()/' /home/node/moonraker/scripts/install-moonraker.sh > /home/node/moonraker/scripts/install-moonraker2.sh +RUN chmod +x /home/node/moonraker/scripts/install-moonraker2.sh +RUN /home/node/moonraker/scripts/install-moonraker2.sh + +RUN sudo rm -f /bin/systemctl +#RUN sudo mv /bin/systemctl.bak /bin/systemctl + +WORKDIR /home/node/ +RUN git clone https://git.savannah.nongnu.org/git/simulavr.git +WORKDIR /home/node/simulavr +RUN make python +RUN make build + +USER root + +COPY api/run-api /usr/local/bin/run-api +RUN chmod +x /usr/local/bin/run-api + +USER node + +ENTRYPOINT ["run-api"] diff --git a/docker/linux.config b/docker/api/linux.config similarity index 100% rename from docker/linux.config rename to docker/api/linux.config diff --git a/docker/start-container b/docker/api/run-api similarity index 86% rename from docker/start-container rename to docker/api/run-api index 67608fe6..c82b6496 100644 --- a/docker/start-container +++ b/docker/api/run-api @@ -2,5 +2,5 @@ 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 & -npm install -npm run serve +echo "Starting ..." >> /tmp/logs/klippy.log +tail -f /tmp/logs/klippy.log diff --git a/docker/simulavr.config b/docker/api/simulavr.config similarity index 100% rename from docker/simulavr.config rename to docker/api/simulavr.config diff --git a/docker/run b/docker/run index ec41c8f6..f80a9d68 100755 --- a/docker/run +++ b/docker/run @@ -2,7 +2,14 @@ export APP_NAME=mainsail -export USERID=${USERID:-$UID} -export GRPID=${GRPID:-$(id -g)} - -docker-compose "$@" +if [ $# -gt 0 ]; then + if [ "$1" == "restart" ]; then + docker-compose restart "$2" + elif [ "$1" == "bash" ]; then + docker exec -it "$APP_NAME-stack-$2" bash + else + docker-compose "$@" + fi +else + docker-compose ps +fi diff --git a/docker/start-npm b/docker/start-npm new file mode 100644 index 00000000..301c11b6 --- /dev/null +++ b/docker/start-npm @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +npm install +npm run serve diff --git a/docs/development/docker.md b/docs/development/docker.md index 2642a242..070a60a6 100644 --- a/docs/development/docker.md +++ b/docs/development/docker.md @@ -32,12 +32,9 @@ docker/run up ``` # Development -For development its sometimes needed to restart the simulavr process. -For this run: +####Commands ```shell -docker exec -it mainsail-stack bash -``` -in the spawnin shell run: -```shell -~/restart-services.sh +docker/run ps #showing running containers +docker/run restart #restarting container +docker/run bash #spawning bash shell inside container ```