überlegung windsows

This commit is contained in:
chk
2026-04-26 20:38:41 +02:00
parent 929b738bcc
commit 096bce11da
2 changed files with 79 additions and 0 deletions

25
install_inside_docker.sh Normal file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
set -e
# Update und installiere Build-Tools (wie im Dockerfile)
apt-get update && apt-get install -y \
build-essential cmake git pkg-config \
libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev \
libtbb-dev libjpeg-dev libpng-dev libtiff-dev \
ffmpeg ca-certificates \
python3 python3-dev python3-numpy \
&& rm -rf /var/lib/apt/lists/*
# Klone und baue OpenCV (wie im Dockerfile)
git clone --branch 4.12.0 https://github.com/opencv/opencv.git /opencv
git clone --branch 4.12.0 https://github.com/opencv/opencv_contrib.git /opencv_contrib
mkdir /opencv/build && cd /opencv/build
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib/modules \
-D BUILD_opencv_python3=ON \
-D BUILD_EXAMPLES=OFF ..
make -j$(nproc) && make install && ldconfig
# Cleanup (optional, um Space zu sparen)
rm -rf /opencv /opencv_contrib

View File

@@ -0,0 +1,54 @@
version: "3.3"
services:
appvideoserver:
image: node:lts-bookworm-slim # Standard-Image, kein Build nötig
container_name: AppRobotVideo
working_dir: /usr/src/app
volumes:
- .:/usr/src/app # Mountet dein Workspace (inkl. install_inside_docker.sh und .installed)
ports:
- "8448:8443"
extra_hosts:
- "host.docker.internal:host-gateway"
init: true
command: >
sh -c "
# Einmalige Installation: Checke Flag-File (.installed im gemounteten Volume)
if [ ! -f .installed ]; then
echo 'Running first-time installation...'
./install_inside_docker.sh && touch .installed
else
echo 'Installation already done, skipping...'
fi &&
# NPM-Installation (einmalig machen, wenn gewünscht hier immer, aber du kannst es anpassen)
if [ -f package-lock.json ] || [ -f npm-shrinkwrap.json ]; then
npm ci || npm install
else
npm install
fi &&
# Starte die App
npm start"
environment:
- NODE_ENV=production
- HOST_UID=${UID-1000}
- HOST_GID=${GID-1000}
- DEV0=/dev/video0
- DEV1=/dev/video2
- TARGET_SERVER=wss://host.docker.internal:2096
# Optional: Env-Var für dein Script (z.B. um es zu überspringen)
- SKIP_INSTALL=false # Kannst du setzen, um manuell zu überspringen
restart: unless-stopped
networks:
- appRobotNet
- default
privileged: true
cap_add:
- SYS_ADMIN
security_opt:
- seccomp:unconfined
networks:
default:
driver: bridge
appRobotNet:
external: true