überlegung windsows
This commit is contained in:
25
install_inside_docker.sh
Normal file
25
install_inside_docker.sh
Normal 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
|
||||||
54
install_inside_docker.yaml
Normal file
54
install_inside_docker.yaml
Normal 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
|
||||||
Reference in New Issue
Block a user