fix composer with two containers now, added documentation and more docker/run commands

This commit is contained in:
Eike Ahmels 2021-02-22 14:52:09 +01:00
parent a167a14f12
commit 7c07db946d
No known key found for this signature in database
GPG Key ID: C7C95B84BC4F55BD
9 changed files with 104 additions and 80 deletions

View File

@ -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:

View File

@ -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"]

62
docker/api/Dockerfile Normal file
View File

@ -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"]

View File

@ -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

View File

@ -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

3
docker/start-npm Normal file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
npm install
npm run serve

View File

@ -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 <api/npm> #restarting container
docker/run bash <api/npm> #spawning bash shell inside container
```