Add files for docker-compose

This commit is contained in:
Sungjin Han
2019-04-24 18:16:05 +09:00
parent 98f103e4d9
commit b35b191659
5 changed files with 147 additions and 0 deletions

10
.dockerignore Normal file
View File

@@ -0,0 +1,10 @@
.git
.gitignore
README.md
run-mjpg-streamer.sh.sample
systemd/
Dockerfile
docker-compose.yaml
.env

8
.env Normal file
View File

@@ -0,0 +1,8 @@
PORT=8080
RESOLUTION=800x600
FPS=24
ANGLE=0
FLIPPED=false
MIRRORED=false
USERNAME=pi
PASSWORD=raspberry

52
Dockerfile Normal file
View File

@@ -0,0 +1,52 @@
# Dockerfile for rpi-mjpg-streamer
# https://www.balena.io/docs/reference/base-images/base-images-ref/
ARG RPI=raspberrypi3
FROM balenalib/$RPI-debian:latest
WORKDIR /
# install packages
RUN apt-get update -y && \
apt-get install -y build-essential libjpeg8-dev imagemagick libv4l-dev git cmake uvcdynctrl libraspberrypi-bin
# build mjpg-streamer
RUN ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h && \
git clone https://github.com/jacksonliam/mjpg-streamer && \
cd mjpg-streamer/mjpg-streamer-experimental && \
cmake -DCMAKE_INSTALL_PREFIX:PATH=.. . && \
make install
# copy rpi-mjpg-streamer files
COPY ./ /
# arguments (default values in `.env` file)
ARG PORT
ARG RESOLUTION
ARG FPS
ARG ANGLE
ARG FLIPPED
ARG MIRRORED
ARG USERNAME
ARG PASSWORD
# environtment variables
ENV PORT=${PORT} \
RESOLUTION=${RESOLUTION} \
FPS=${FPS} \
ANGLE=${ANGLE} \
FLIPPED=${FLIPPED} \
MIRRORED=${MIRRORED} \
USERNAME=${USERNAME} \
PASSWORD=${PASSWORD}
# configure
RUN echo "{'angle': ${ANGLE}, 'flipped': ${FLIPPED}, 'mirrored': ${MIRRORED}}" \
> /www/config.json
# Open ports
EXPOSE $PORT
# Entry point for the built application
ENTRYPOINT ["/run-mjpg-streamer.docker.sh"]

21
docker-compose.yaml Normal file
View File

@@ -0,0 +1,21 @@
version: "3.7"
services:
streamer:
build:
context: .
args:
- PORT=${PORT}
- RESOLUTION=${RESOLUTION}
- FPS=${FPS}
- ANGLE=${ANGLE}
- FLIPPED=${FLIPPED}
- MIRRORED=${MIRRORED}
- USERNAME=${USERNAME}
- PASSWORD=${PASSWORD}
image: rpi-mjpg-streamer:latest
devices:
- "/dev/video0:/dev/video0"
ports:
- "${PORT}:${PORT}"
restart: always
command: run-mjpg-streamer.docker.sh

56
run-mjpg-streamer.docker.sh Executable file
View File

@@ -0,0 +1,56 @@
#!/bin/sh
#
# Script for docker
#
# created by : meinside@gmail.com
# last update: 2019.04.24.
#
################
# customize these:
# mjpg_streamer's install location
MJPG_STREAMER_DIR="/mjpg-streamer"
# mjpg_streamer excutable's location
MJPG_STREAMER_BIN="$MJPG_STREAMER_DIR/bin/mjpg_streamer"
# mjpg_streamer plugins' location
MJPG_STREAMER_PLUGINS_DIR="$MJPG_STREAMER_DIR/lib/mjpg-streamer"
# streaming port
MJPG_STREAMER_PORT=$PORT
# htmls and related files' location
MJPG_STREAMER_WWW="/www"
# video device
DEVICE_IN="/dev/video0"
# video settings
RESOLUTION=$RESOLUTION
FPS=$FPS
# authentication
USERNAME=$USERNAME
PASSWORD=$PASSWORD
if [ ! -z $USERNAME ] && [ ! -z $PASSWORD ]; then
AUTH="-c $USERNAME:$PASSWORD"
else
AUTH=""
fi
# LED blink
LED="off" # on/off/blink/auto (may not work on rpi camera modules)
# plugins
PLUGIN_IN="$MJPG_STREAMER_PLUGINS_DIR/input_uvc.so -d $DEVICE_IN -r $RESOLUTION -f $FPS -l $LED"
PLUGIN_OUT="$MJPG_STREAMER_PLUGINS_DIR/output_http.so -p $MJPG_STREAMER_PORT -w $MJPG_STREAMER_WWW $AUTH"
################
# run mjpg_streamer
$MJPG_STREAMER_BIN -i "$PLUGIN_IN" -o "$PLUGIN_OUT"
################