docker support files moved to zmdockerfiles
This commit is contained in:
parent
95edf1b2a8
commit
32bf57d35b
|
@ -1,4 +1,4 @@
|
|||
## Docker Support Files
|
||||
|
||||
The files in this folder are used to support our Dockerfiles here:
|
||||
Docker support files have been moved to the zmdockerfiles repo:
|
||||
https://github.com/ZoneMinder/zmdockerfiles
|
||||
|
|
|
@ -1,142 +0,0 @@
|
|||
#!/bin/bash
|
||||
# ZoneMinder Dockerfile entrypoint script
|
||||
# Written by Andrew Bauer <zonexpertconsulting@outlook.com>
|
||||
|
||||
###############
|
||||
# SUBROUTINES #
|
||||
###############
|
||||
|
||||
# Find ciritical files and perform sanity checks
|
||||
initialize () {
|
||||
|
||||
# Check to see if this script has access to all the commands it needs
|
||||
for CMD in mysqladmin sed usermod service; do
|
||||
type $CMD &> /dev/null
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo
|
||||
echo "ERROR: The script cannot find the required command \"${CMD}\"."
|
||||
echo
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Look in common places for the zoneminder config file - zm.conf
|
||||
for FILE in "/etc/zm.conf" "/etc/zm/zm.conf" "/usr/local/etc/zm.conf" "/usr/local/etc/zm/zm.conf"; do
|
||||
if [ -f $FILE ]; then
|
||||
ZMCONF=$FILE
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Look in common places for the zoneminder startup perl script - zmpkg.pl
|
||||
for FILE in "/usr/bin/zmpkg.pl" "/usr/local/bin/zmpkg.pl"; do
|
||||
if [ -f $FILE ]; then
|
||||
ZMPKG=$FILE
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Look in common places for the zoneminder dB creation script - zm_create.sql
|
||||
for FILE in "/usr/share/zoneminder/db/zm_create.sql" "/usr/local/share/zoneminder/db/zm_create.sql"; do
|
||||
if [ -f $FILE ]; then
|
||||
ZMCREATE=$FILE
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Look in common places for the php.ini relevant to zoneminder - php.ini
|
||||
# Search order matters here because debian distros commonly have multiple php.ini's
|
||||
for FILE in "/etc/php/7.0/apache2/php.ini" "/etc/php5/apache2/php.ini" "/etc/php.ini" "/usr/local/etc/php.ini"; do
|
||||
if [ -f $FILE ]; then
|
||||
PHPINI=$FILE
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
for FILE in $ZMCONF $ZMPKG $ZMCREATE $PHPINI; do
|
||||
if [ -z $FILE ]; then
|
||||
echo
|
||||
echo "FATAL: This script was unable to determine one or more cirtical files. Cannot continue."
|
||||
echo
|
||||
echo "VARIABLE DUMP"
|
||||
echo "-------------"
|
||||
echo
|
||||
echo "Path to zm.conf: ${ZMCONF}"
|
||||
echo "Path to zmpkg.pl: ${ZMPKG}"
|
||||
echo "Path to zm_create.sql: ${ZMCREATE}"
|
||||
echo "Path to php.ini: ${PHPINI}"
|
||||
echo
|
||||
exit 98
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
start_mysql () {
|
||||
service mysql start
|
||||
# Give MySQL time to wake up
|
||||
SECONDS_LEFT=120
|
||||
while true; do
|
||||
sleep 1
|
||||
mysqladmin ping > /dev/null 2>&1
|
||||
if [ $? -eq 0 ];then
|
||||
break; # Success
|
||||
fi
|
||||
let SECONDS_LEFT=SECONDS_LEFT-1
|
||||
|
||||
# If we have waited >120 seconds, give up
|
||||
# ZM should never have a database that large!
|
||||
# if $COUNTER -lt 120
|
||||
if [ $SECONDS_LEFT -eq 0 ];then
|
||||
return -1;
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
close_mysql () {
|
||||
service mysql stop
|
||||
sleep 5
|
||||
}
|
||||
|
||||
################
|
||||
# MAIN PROGRAM #
|
||||
################
|
||||
|
||||
echo
|
||||
initialize
|
||||
|
||||
# Configure then start Mysql
|
||||
if [ -n "$MYSQL_SERVER" ] && [ -n "$MYSQL_USER" ] && [ -n "$MYSQL_PASSWORD" ] && [ -n "$MYSQL_DB" ]; then
|
||||
sed -i -e "s/ZM_DB_NAME=zm/ZM_DB_NAME=$MYSQL_USER/g" $ZMCONF
|
||||
sed -i -e "s/ZM_DB_USER=zmuser/ZM_DB_USER=$MYSQL_USER/g" $ZMCONF
|
||||
sed -i -e "s/ZM_DB_PASS=zm/ZM_DB_PASS=$MYSQL_PASS/g" $ZMCONF
|
||||
sed -i -e "s/ZM_DB_HOST=localhost/ZM_DB_HOST=$MYSQL_SERVER/g" $ZMCONF
|
||||
start_mysql
|
||||
else
|
||||
usermod -d /var/lib/mysql/ mysql
|
||||
start_mysql
|
||||
mysql -u root < $ZMCREATE
|
||||
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';"
|
||||
fi
|
||||
# Ensure we shut down mysql cleanly later:
|
||||
trap close_mysql SIGTERM
|
||||
|
||||
# Configure then start Apache
|
||||
if [ -z "$TZ" ]; then
|
||||
$TZ = UTC
|
||||
fi
|
||||
echo "date.timezone = $TZ" >> $PHPINI
|
||||
service apache2 start
|
||||
|
||||
# Start ZoneMinder
|
||||
echo " * Starting ZoneMinder video surveillance recorder"
|
||||
$ZMPKG start
|
||||
echo " ...done."
|
||||
|
||||
# Stay in a loop to keep the container running
|
||||
while :
|
||||
do
|
||||
# perhaps output some stuff here or check apache & mysql are still running
|
||||
sleep 3600
|
||||
done
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[Date]
|
||||
; Defines the default timezone used by the date functions
|
||||
; http://php.net/date.timezone
|
||||
date.timezone = GMT
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
setup_mysql_first_time(){
|
||||
if [ "$(ls /var/lib/mysql)" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
# Set MySQL in the volume
|
||||
rm -rf /var/lib/mysql/*
|
||||
chown -R mysql:mysql /var/lib/mysql
|
||||
mysqld --initialize-insecure
|
||||
|
||||
# Start MySQL
|
||||
# For Xenial the following won't start mysqld
|
||||
#/usr/bin/mysqld_safe &
|
||||
# Use this instead:
|
||||
service mysql start
|
||||
|
||||
# Give MySQL time to wake up
|
||||
SECONDS_LEFT=120
|
||||
while true; do
|
||||
sleep 1
|
||||
mysqladmin ping
|
||||
if [ $? -eq 0 ];then
|
||||
break; # Success
|
||||
fi
|
||||
let SECONDS_LEFT=SECONDS_LEFT-1
|
||||
|
||||
# If we have waited >120 seconds, give up
|
||||
# ZM should never have a database that large!
|
||||
# if $COUNTER -lt 120
|
||||
if [ $SECONDS_LEFT -eq 0 ];then
|
||||
return -1;
|
||||
fi
|
||||
done
|
||||
|
||||
# Create the ZoneMinder database
|
||||
mysql -u root < db/zm_create.sql
|
||||
|
||||
# Add the ZoneMinder DB user
|
||||
mysql -u root -e "grant insert,select,update,delete,lock tables,alter on zm.* to 'zmuser'@'localhost' identified by 'zmpass';"
|
||||
|
||||
# Shut down mysql cleanly:
|
||||
kill $(cat /var/run/mysqld/mysqld.pid)
|
||||
sleep 5
|
||||
}
|
||||
|
||||
setup_mysql() {
|
||||
# To configure MySQL if no container did it before
|
||||
setup_mysql_first_time
|
||||
|
||||
# Add configuration to avoid SQL error when adding monitor
|
||||
echo "sql_mode=NO_ENGINE_SUBSTITUTION" >> /etc/mysql/mysql.conf.d/mysqld.cnf
|
||||
}
|
||||
|
||||
setup_php() {
|
||||
# Activate CGI
|
||||
a2enmod -q cgi
|
||||
|
||||
# Activate modrewrite
|
||||
a2enmod -q rewrite
|
||||
|
||||
# Setting timezone
|
||||
sed -i "s#;date.timezone =#date.timezone = $PHP_TIMEZONE#" /etc/php/7.0/apache2/php.ini
|
||||
|
||||
# Settings rights for volume
|
||||
chown -R www-data:www-data /var/lib/zoneminder/events
|
||||
chown -R www-data:www-data /var/lib/zoneminder/images
|
||||
}
|
||||
|
||||
|
||||
setup_mysql
|
||||
setup_php
|
||||
|
||||
exit 0
|
|
@ -1,48 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Prepare proper amount of shared memory
|
||||
# For H.264 cameras it may be necessary to increase the amount of shared memory
|
||||
# to 2048 megabytes.
|
||||
umount /dev/shm
|
||||
mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm
|
||||
|
||||
# Start MySQL
|
||||
test -e /var/run/mysqld || install -m 755 -o mysql -g root -d /var/run/mysqld
|
||||
su - mysql -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"
|
||||
|
||||
# Ensure we shut down mysql cleanly later:
|
||||
trap close_mysql SIGTERM
|
||||
|
||||
# Give MySQL time to wake up
|
||||
SECONDS_LEFT=120
|
||||
while true; do
|
||||
sleep 1
|
||||
mysqladmin ping
|
||||
if [ $? -eq 0 ];then
|
||||
break; # Success
|
||||
fi
|
||||
let SECONDS_LEFT=SECONDS_LEFT-1
|
||||
|
||||
# If we have waited >120 seconds, give up
|
||||
# ZM should never have a database that large!
|
||||
# if $COUNTER -lt 120
|
||||
if [ $SECONDS_LEFT -eq 0 ];then
|
||||
return -1;
|
||||
fi
|
||||
done
|
||||
|
||||
# Restart apache
|
||||
service apache2 restart
|
||||
|
||||
# Start ZoneMinder
|
||||
/usr/local/bin/zmpkg.pl start && echo "Zone Minder started"
|
||||
|
||||
while :
|
||||
do
|
||||
sleep 3600
|
||||
done
|
||||
|
||||
function close_mysql {
|
||||
kill $(cat /var/run/mysqld/mysqld.pid)
|
||||
sleep 5
|
||||
}
|
Loading…
Reference in New Issue