Giter Club home page Giter Club logo

zmdockerfiles's Introduction

ZoneMinder

Bounty Source Join Slack drawing

All documentation for ZoneMinder is now online at https://zoneminder.readthedocs.org

Overview

ZoneMinder is an integrated set of applications which provide a complete surveillance solution allowing capture, analysis, recording and monitoring of any CCTV or security cameras attached to a Linux based machine. It is designed to run on distributions which support the Video For Linux (V4L) interface and has been tested with video cameras attached to BTTV cards, various USB cameras and also supports most IP network cameras.

Contacting the Development Team

Before creating an issue in our github forum, please read our posting rules: https://github.com/ZoneMinder/ZoneMinder/wiki/Github-Posting-Rules

Our Dockerfile has moved

Please file issues against the ZoneMinder Dockerfile here: https://github.com/ZoneMinder/zmdockerfiles

Installation Methods

Install from a Package Repository

This is the recommended method to install ZoneMinder onto your system. ZoneMinder packages are maintained for the following distros:

If a repository that hosts ZoneMinder packages is not available for your distro, then you are encouraged to build your own package, rather than build from source. While each distro is different in ways that set it apart from all the others, they are often similar enough to allow you to adapt another distro's package building instructions to your own.

Building from Source is Discouraged

Historically, installing ZoneMinder onto your system required building from source code by issuing the traditional configure, make, make install commands. To get ZoneMinder to build, all of its dependencies had to be determined and installed beforehand. Init and logrotate scripts had to be manually copied into place following the build. Optional packages such as jscalendar and Cambozola had to be manually installed. Uninstalls could leave stale files around, which could cause problems during an upgrade. Speaking of upgrades, when it comes time to upgrade all these manual steps must be repeated again.

Better methods exist today that do much of this for you. The current development team, along with other volunteers, have taken great strides in providing the resources necessary to avoid building from source.

Building a ZoneMinder Package

Building ZoneMinder into a package is not any harder than building from source. As a matter of fact, if you have successfully built ZoneMinder from source in the past, then you may find these steps to be easier.

When building a package, it is best to do this work in a separate environment, dedicated to development purposes. This could be as simple as creating a virtual machine, using Docker, or using mock. All it takes is one โ€œOopsโ€ to regret doing this work on your production server.

Lastly, if you desire to build a development snapshot from the master branch, it is recommended you first build your package using an official release of ZoneMinder. This will help identify whether any problems you may encounter are caused by the build process or is a new issue in the master branch.

Please visit our ReadtheDocs site for distro specific instructions.

Package Maintainers

Many of the ZoneMinder configuration variable default values are not configurable at build time through autotools or cmake. A new tool called zmeditconfigdata.sh has been added to allow package maintainers to manipulate any variable stored in ConfigData.pm without patching the source.

For example, let's say I have created a new ZoneMinder package that contains the cambozola javascript file. However, by default cambozola support is turned off. To fix that, add this to the packaging script:

./utils/zmeditconfigdata.sh ZM_OPT_CAMBOZOLA yes

Note that zmeditconfigdata.sh is intended to be called, from the root build folder, prior to running cmake or configure.

Docker

Docker is a system to run applications inside isolated containers. ZoneMinder, and the ZM webserver, will run using the Dockerfile contained in this repository. However, there is still work needed to ensure that the main ZM features work properly and are documented.

Contribution Model and Development

Pull requests are very welcome! If you would like to contribute, please follow the following steps. While step 3 is optional, it is preferred.

  1. Fork the repo
  2. Open an issue at our GitHub Issues Tracker. Follow the issue template to describe the bug or security issue you found. Please note feature requests or questions should be posted in our user forum or Slack channel.
  3. Create your feature branch (git checkout -b 456-my-new-feature)
  4. Commit your changes (git commit -am 'Added some feature') It is preferred that you 'commit early and often' instead of bunching all changes into a single commit.
  5. Push your branch to your fork on github (git push origin 456-my-new-feature)
  6. Create new Pull Request
  7. The team will then review, discuss and hopefully merge your changes.

Analytics

zmdockerfiles's People

Contributors

55octet avatar adenner avatar ancker010 avatar andornaut avatar basm avatar connortechnology avatar danobot avatar dkopecek avatar fawick avatar gergnz avatar humorbaby avatar knight-of-ni avatar neogta avatar petegallagher avatar robert-scheck avatar si458 avatar thoraxe avatar tylerszabo avatar zhuykovkb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zmdockerfiles's Issues

Permissions issues for release/el7 container events and images

Similar to #33, the container can't write to /var/lib/zoneminder/events and /var/lib/zoneminder/images after creation. It appears that the apache UID of 48 needed to be given ownership for both volumes.

Fix
sudo chown 48:48 /host/path/to/events /host/path/to/images

Entrypoint cannot handle external mysql server running in non-standard port

mysql_running () {
if [ "$remoteDB" -eq "1" ]; then
mysqladmin ping -u${ZM_DB_USER} -p${ZM_DB_PASS} -h${ZM_DB_HOST} > /dev/null 2>&1
else
mysqladmin ping > /dev/null 2>&1
fi
local result="$?"
if [ "$result" -eq "0" ]; then
echo "1" # mysql is running
else
echo "0" # mysql is not running
fi
}

According to the zm.conf ZM_DB_HOST can be ip:port - the mysql_running doesn't handle this situation correctly and mysqladmin ping fails.
should be f.ex;
mysqladmin ping -u${ZM_DB_USER} -p${ZM_DB_PASS} -h${ZM_DB_HOST} -P${ZM_DB_PORT}> /dev/null 2>&1

ZoneMinder database hostname or ip address and optionally port or unix socket

Acceptable formats include hostname[:port], ip_address[:port], or localhost:unix_socket

ZM_DB_HOST="192.168.100.16:3307"

Apache webpage instead of zoneminder console

Used docker file :
https://github.com/ZoneMinder/zmdockerfiles/tree/master/release/ubuntu18.04

Also tried pulling from docker hub from PR https://github.com/ZoneMinder/zmdockerfiles/pull/37/files :

docker run -d -t -p 1080:80 \
    -e TZ='Europe/London' \
    -v ~/zoneminder/events:/var/cache/zoneminder/events \
    -v ~/zoneminder/images:/var/cache/zoneminder/images \
    -v ~/zoneminder/mysql:/var/lib/mysql \
    -v ~/zoneminder/logs:/var/log/zm \
    --shm-size="512m" \
    --name zoneminder \
    zoneminderhq/zoneminder:latest-ubuntu18.04

Result is the same : accessing web page shows Apache "It wors" but not zoneminder console

Docker build works fine but minor warning is given: "Invalid command 'RewriteEngine',"

When running docker build . on development/ubuntu/xenial/Dockerfile:

 ---> Running in 2d58f9e71005
AH00526: Syntax error on line 62 of /etc/apache2/sites-enabled/000-default.conf:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

This will output a scary red text in the terminal. It would be better to have it all green ๐Ÿ˜ธ

I can't access zoneminder when starting with docker. I've exposed port 8776 and when visiting that I get refused to connect message.

zoneminder:
    container_name: zoneminder
    restart: unless-stopped
    image: kylejohnson/zoneminder
    volumes:
      - /disk/zoneminder/events:/var/lib/zoneminder/events
      - /disk/zoneminder/images:/var/lib/zoneminder/images
      - /disk/zoneminder/mysql:/var/lib/mysql
      - /disk/zoneminder/logs:/var/log/zm
    environment:
      - shm-size="512m"
      - TZ="America/New_York"
    network_mode: host
    ports:
      - "8775:80"
      - "8776:443"

Publish image to dockerhub

Hello! The dockerfile states that we can run the image using the zoneminder/zoneminder name, but there is no image with that name on dockerhub

louispilfold@cloudshell:~$ docker run zoneminder/zoneminder
Unable to find image 'zoneminder/zoneminder:latest' locally
docker: Error response from daemon: pull access denied for zoneminder/zoneminder, repository does not exist or may require 'docker login'.
See 'docker run --help'.

Could it be added to dockerhub please? Thank you

Create prebuilt images for the different event server/hooks/face configurations

I am using the ubuntu18.04 image, on start up the container is installing all the additional dependencies like the event notification server and face recognition.
It would be much better if the installation of those dependencies can be handled in the Dockerfile and distributed via a tagged image. this means containers will start up immediately and the dependencies only need to be installed once when the imgae is built (rather than each time the container is created).

Remove zmaudit.pid on startup to avoid an error when ZoneMinder is restarted

If a ZoneMinder Docker container exits uncleanly and is restarted (eg. after a power loss), then the /run/zm/zmaudit.pid file may exist, which can result in the following error appearing in the log:

zmaudit.pld appears to already be running at pid 565. If not, please delete /run/zm/zmaudit.pid or use the --force command line option.

Suggestion: Execute rm -rf /run/zm/* in start_zoneminder(). This will also delete stale *.lock and *.sock files, which I believe to be desirable as well.

ubuntu devel permissions for web user

In order to get the dockerfile/image working correctly for (devel/xenial) I had to:

  1. set owner to www-data to /var/cache/zoneminder (in container)
  2. set owner to www-data to /var/lib/zoneminder/events
  3. had to add "Alias /cache "/var/cache/xoneminder" to /etc/apache/sites-enabled/000-default.conf

I can not monitor my camera using docker-composer

Hallo,

i have a Sricam camera, i can monitor it using VLC and rtsp.

when i add the camera on ZoneMinder, i get the following error in the log:

2021-05-14 13:32:57.225823 zmc_m1[748].ERR-zmc.cpp/257 [Failed to prime capture of initial monitor]
2021-05-14 13:32:57.222745 zmc_m1[748].ERR-zm_ffmpeg_camera.cpp/394 [Unable to open input rtsp://camera ip/onvif1 due to: Invalid data found when processing input]
2021-05-14 13:32:47.076878 zmc_m1[748].ERR-zmc.cpp/257 [Failed to prime capture of initial monitor]
2021-05-14 13:32:47.073103 zmc_m1[748].ERR-zm_ffmpeg_camera.cpp/394 [Unable to open input rtsp://camera ip/onvif1 due to: Invalid data found when processing input]
2021-05-14 13:32:36.936717 zmc_m1[748].ERR-zmc.cpp/257 [Failed to prime capture of initial monitor]
2021-05-14 13:32:36.934205 zmc_m1[748].ERR-zm_ffmpeg_camera.cpp/394 [Unable to open input rtsp://camera ip/onvif1 due to: Invalid data found when processing input]
2021-05-14 13:32:26.821230 zmc_m1[748].ERR-zmc.cpp/257 [Failed to prime capture of initial monitor]
2021-05-14 13:32:26.818673 zmc_m1[748].ERR-zm_ffmpeg_camera.cpp/394 [Unable to open input rtsp://my camera ip/onvif1 due to: Invalid data found when processing input]
2021-05-14 13:32:16.703762 zmc_m1[748].ERR-zmc.cpp/257 [Failed to prime capture of initial monitor]
2021-05-14 13:16:34.439960 zmpkg[445].INF-zmpkg.pl [Sanity checking States table...]

Screenshot 2021-05-14 at 13 36 39

Screenshot 2021-05-14 at 13 36 53

Screenshot 2021-05-14 at 13 39 28

how can i solve the issue?

thanks

Memory map file issue & zmMemInvalidate issue

I installed Zoneminder using this command

docker run -d \
 --restart=always \
 --name zoneminder \
 -h zoneminder \
 -e PUID=1001 \
 -e PGID=1001 \
 -e TZ=Europe/Nicosia \
 --net=network \
 -p 1080:80 \
 --shm-size="512m" \
 -v /mnt/monitor/zoneminder/events:/var/cache/zoneminder/events \
 -v /mnt/monitor/zoneminder/images:/var/cache/zoneminder/images \
 -v zoneminder:/var/lib/mysql \
 -v zoneminder:/var/log/zm \
 zoneminderhq/zoneminder:latest-ubuntu18.04

I get these messages in the log file

Memory map file '/dev/shm/zm.mmap.1' does not exist. zmc might not be running.

no memkey in zmMemInvalidate

This is how I always add my cameras to Zoneminder, but with this installation, I get no video feed.

1
2

Log directory is wrong

The examples in the Dockerfile show the following line to be used to store logs outside of the container:

# -v /disk/zoneminder/logs:/var/log/zm \

However, that's not where ZoneMinder stores its logs. It stores them at /var/log/zoneminder:

# du -sh /var/log/z*
512     /var/log/zm
60K     /var/log/zoneminder

This error is in the file zmdockerfiles/release/el7/Dockerfile.

missing perl modules

Zoneminder version

I use this Dockerfile.

That image missing next modules:

Crypt::Eksblowfish::Bcrypt Data::Entropy::Algorithms

Error:

root@08275d0a028d:/ZoneMinder# zmupdate.pl 
Can't locate Crypt/Eksblowfish/Bcrypt.pm in @INC (you may need to install the Crypt::Eksblowfish::Bcrypt module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.2
2.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/local/bin/zmupdate.pl
 line 54.
BEGIN failed--compilation aborted at /usr/local/bin/zmupdate.pl line 54.

How i fixed the error in runtime:

cpan -i Crypt::Eksblowfish::Bcrypt Data::Entropy::Algorithms

that issue looks like #18 .

el8 repo name incorrect

dnf -y install 'dnf-command(config-manager)' && dnf config-manager --set-enabled PowerTools \

command here fails

[root@114ca4b04a6a /]# dnf config-manager --set-enabled PowerTools
Failed to set locale, defaulting to C.UTF-8
Error: No matching repo to modify: PowerTools.

repolist shows the name is currently all lowecase.

[root@114ca4b04a6a /]# dnf repolist all |grep -i powertool
Failed to set locale, defaulting to C.UTF-8
powertools CentOS Linux 8 - PowerTools disabled

Empty external database (without schema) fail to start (entrypoint do not create schema )

Using external database, database (without schema) and user created only, entrypoint.sh do not handle this, see below in chk_remote_mysql (). Entrypoint.sh call zm_create.sql only when connect to sql server and db not found, but this need user with high privileges. You should consider option when you have external database and user, and call create schema sql only. zm_create.sql need to be parametrized with database name ( database name "zm" is hardcoded )

# Check the status of the remote mysql server using supplied credentials
chk_remote_mysql () {
    if [ "$remoteDB" -eq "1" ]; then
        echo -n " * Looking for remote database server"
        if [ "$(mysql_running)" -eq "1" ]; then
            echo "   ...found."
        else
            echo "   ...failed!"
            return
        fi
        echo -n " * Looking for existing remote database"
        if [ "$(zm_db_exists)" -eq "1" ]; then
            echo "   ...found."
        else
            echo "   ...not found."
            echo -n " * Attempting to create remote database using provided credentials"
            mysql -u${ZM_DB_USER} -p${ZM_DB_PASS} -h${ZM_DB_HOST} < $ZMCREATE
            RETVAL=$?
            if [ "$RETVAL" = "0" ]; then
                echo "   ...done."
            else
                echo "   ...failed!"
                echo " * Error: Remote database must be manually configred."
            fi
        fi
    else
        # This should never happen
        echo " * Error: chk_remote_mysql subroutine called but no sql credentials were given!"
    fi
}

Workaround

Note: database name have to be "zm", otherwise update zm_create.sql

  1. In external mysql, create database and user;
create database zm;
grant all privileges on zm.* TO 'user'@'%' identified by 'password';
flush privileges;
  1. call zm_create.sql from zoneminder container, BUT skip call entrypoint.sh
    Note: using podman , but for docker is the same

# podman run -it --rm --entrypoint="" zoneminder:latest-el7 /bin/sh -c 'mysql --verbose -h12.34.56.78 -uuser -ppassword zm < /usr/share/zoneminder/db/zm_create.sql '> zm_create.log

  1. run container with external db
# podman run -d -t -p 1080:443 \
    -e TZ='America/Los_Angeles' \
    -e ZM_DB_USER='zmuser' \
    -e ZM_DB_PASS='zmpassword' \
    -e ZM_DB_NAME='zoneminder_database' \
    -e ZM_DB_HOST='my_central_db_server' \

Thank you for making Zoneminder.

Warning on build from development ubuntu xenial

Hi guys. I'm really wonder of what you doing. It's great!

I've found a warning on building the Dockerfile from latest Dockerfile. Here my output:

root@office:/home/system/docker/zmtest/docker# docker-compose build
Building zm
Step 1/18 : FROM ubuntu:xenial
 ---> b9e15a5d1e1a
Step 2/18 : MAINTAINER Markos Vakondios <[email protected]> Riley Schuit <[email protected]>
 ---> Using cache
 ---> 03d071ab0ee4
Step 3/18 : RUN apt-get update     && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends     apache2     build-essential     cmake     dh-autoreconf     dpatch     git     libapache2-mod-php     libarchive-zip-perl     libavcodec-dev     libavdevice-dev     libavfilter-dev     libavformat-dev     libavresample-dev     libav-tools     libavutil-dev     libbz2-dev     libcurl4-gnutls-dev     libdate-manip-perl     libdbd-mysql-perl     libdbi-perl     libdevice-serialport-perl     libgcrypt-dev     libgnutls-openssl-dev     libjpeg-turbo8     libjpeg-turbo8-dev     libmime-lite-perl     libmime-perl     libmp4v2-dev     libmysqlclient-dev     libnet-sftp-foreign-perl     libnetpbm10-dev     libpcre3     libpcre3-dev     libpolkit-gobject-1-dev     libpostproc-dev     libssl-dev     libswscale-dev     libsys-cpu-perl     libsys-meminfo-perl     libsys-mmap-perl     libtheora-dev     libtool     libv4l-dev     libvlc5     libvlccore8     libvlccore-dev     libvlc-dev     libvorbis-dev     libvpx-dev     libwww-perl     libx264-dev     mysql-client     mysql-server     php     php-cli     php-gd     php-mysql     ssmtp     software-properties-common     vlc-data     yasm     zip     && add-apt-repository -y ppa:iconnor/zoneminder     && apt-get update     && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends     php-apcu-bc     && rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> 6e6e1aa8fe0d
Step 4/18 : RUN git clone --recursive https://github.com/ZoneMinder/ZoneMinder
 ---> Using cache
 ---> fbd2d2b9eedc
Step 5/18 : WORKDIR /ZoneMinder
 ---> Using cache
 ---> 50d9ca9ed2ac
Step 6/18 : RUN cmake .
 ---> Using cache
 ---> 3868a89220bf
Step 7/18 : RUN make && make install
 ---> Using cache
 ---> 6cb6ee4525fa
Step 8/18 : RUN ./zmlinkcontent.sh
 ---> Using cache
 ---> ffcba2932520
Step 9/18 : VOLUME /var/lib/zoneminder/images /var/lib/zoneminder/events /var/lib/mysql /var/log/zm
 ---> Using cache
 ---> bc0b644d3446
Step 10/18 : RUN service mysql stop && service apache2 stop
 ---> Using cache
 ---> 311e64a6b2e6
Step 11/18 : RUN cp misc/apache.conf /etc/apache2/sites-available/000-default.conf
 ---> Using cache
 ---> 5014c4fd1e80
Step 12/18 : RUN echo "ServerName localhost" > /etc/apache2/conf-available/servername.conf && a2enconf -q servername
 ---> Using cache
 ---> 15e215419814
Step 13/18 : RUN a2enmod -q cgi && a2enmod -q rewrite
 ---> Running in 9d4f29d9b409
AH00526: Syntax error on line 62 of /etc/apache2/sites-enabled/000-default.conf:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Enabling module cgi.
Enabling module rewrite.
 ---> dce2c91fbb91
Removing intermediate container 9d4f29d9b409

to disable it we should invert cgi and rewrite options for a2enmod. I'll do a PR for this. Thank you.
P.S. My docker-compose.yml:

root@office:/home/system/docker/zmtest/docker# cat docker-compose.yml   
version: '3'
services:
  zm:
    build: ./zm/image
    container_name: "${CONTAINER_NAME}"
    image: "${IMAGE_NAME}"
    shm_size: '8gb'
    env_file:
      - .env
    ports:
     - "127.0.0.1:82:80"
    volumes:
     - "${ZM_PATH_PREFIX}/events:/var/lib/zoneminder/events"
     - "${ZM_PATH_PREFIX}/images:/var/lib/zoneminder/images"
     - "${ZM_PATH_PREFIX}/mysql:/var/lib/mysql"
     - "${ZM_PATH_PREFIX}/logs:/var/log/zm"
     - "${ZM_PATH_PREFIX}/cache:/var/cache/zoneminder"

my .env file:

root@office:/home/system/docker/zmtest/docker# cat .env 
CONTAINER_NAME=zoneminder-git-test-dev
IMAGE_NAME=zoneminder-git-test-dev
TZ=Europe/Moscow
ZM_PATH_PREFIX=/zoneminder/dev
root@office:/home/system/docker/zmtest/docker# 

www-data does not have write access to the events, logs, images

Without messing with the compose file, I kept getting this error:
Could not open out file '/var/cache/zoneminder/events/2/2020-12-28/4/4-video.mp4': No such file or directory

My host system is openSUSE LEAP 15.2. I am using Docker version 19.03.11, build 42e35e61f352
I deployed the docker-compose version.

version: '3.1'
services:
  zoneminder:
    container_name: zoneminder
    image: zoneminderhq/zoneminder:latest-ubuntu18.04
    restart: unless-stopped
    ports:
      - 8080:80
    network_mode: "bridge"
    privileged: true
    shm_size: 512M
    environment:
      - TZ=America/New_York
    volumes:
      - /var/data/zoneminder/events:/var/cache/zoneminder/events
      - /var/data/zoneminder/images:/var/cache/zoneminder/images
      - /var/data/zoneminder/mysql:/var/lib/mysql
      - /var/data/zoneminder/logs:/var/log/zoneminder

The /var/data/zoneminder/ is owned by nobody:users.

The only way for me to get the captures working was to execute these commands:

docker-compose exec zoneminder chown -R www-data:www-data /var/cache/zoneminder/events
docker-compose exec zoneminder chown -R www-data:www-data /var/cache/zoneminder/images
docker-compose exec zoneminder chown -R www-data:www-data /var/log/zonemider

Unable to access web interface after starting docker

After building release/el7/Dockerfile with docker build . --tag zoneminder/zoneminder I run it with

docker run \                                                                                                                                                                                                                                                                    
  --tty \                                                                                                                                                                                                                                                                       
  --detach \                                                                                                                                                                                                                                                                    
  --restart always \                                                                                                                                                                                                                                                            
  --publish 1080:443 \                                                                                                                                                                                                                                                          
  --env TZ='America/New_York' \                                                                                                                                                                                                                                                 
  --volume /srv/zoneminder/events:/var/lib/zoneminder/events \                                                                                                                                                                                                                  
  --volume /srv/zoneminder/images:/var/lib/zoneminder/images \                                                                                                                                                                                                                  
  --volume /srv/zoneminder/logs:/var/log/zm \                                                                                                                                                                                                                                   
  --volume /srv/zoneminder/db:/var/lib/mysql \                                                                                                                                                                                                                                  
  --shm-size="512m" \                                                                                                                                                                                                                                                           
  --name zoneminder \                                                                                                                                                                                                                                                           
  zoneminder/zoneminder

When I access https://myhostname:1080 it appears I'm redirected to /zm which results in a 404.

#FEATURE - Alpine image ?

Alpine is known of it's tiny size along with it's optimized security prospective ... can we create an alpine Linux based docker image ?

Dev Docker image does not build

I'm using the dev docker image.

As described in #61 there is a problem with the repository used, so I changed it to "ppa:iconnor/zoneminder-1.34", but that's not my biggest problem.

When building the image, the command "RUN make && make install" fails with the following error :

[ 22%] Building CXX object src/CMakeFiles/zm.dir/zm_ffmpeg_camera.cpp.o
/ZoneMinder/src/zm_ffmpeg_camera.cpp: In member function 'virtual int FfmpegCamera::CaptureAndRecord(Image&, timeval, char*)':
/ZoneMinder/src/zm_ffmpeg_camera.cpp:978:50: error: 'hw_pix_fmt' was not declared in this scope
if ( (ret == AVERROR_INVALIDDATA ) && (hw_pix_fmt != AV_PIX_FMT_NONE) ) {
^
src/CMakeFiles/zm.dir/build.make:446: recipe for target 'src/CMakeFiles/zm.dir/zm_ffmpeg_camera.cpp.o' failed
make[2]: *** [src/CMakeFiles/zm.dir/zm_ffmpeg_camera.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/zm.dir/all] Error 2
CMakeFiles/Makefile2:376: recipe for target 'src/CMakeFiles/zm.dir/all' failed
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2
The command '/bin/sh -c make && make install' returned a non-zero code: 2

I am not familiar with C language nor ZM build system so I can't make it work. Am I missing something ?

Ubuntu Docker has a blank /zm page

Pulled the docker container for ubuntu from here:
https://hub.docker.com/r/zoneminderhq/zoneminder

Adjusted the local paths for the events, images, etc, but did not change anything else. The container started without any errors and I am able to pull up the Apache2 Ubuntu Default Page (:1080) and :1080/zm pulls up a page, but that page is blank. It appears Germs2004 had the same or similar issue on a closed bug: #49.

Typo on dockerfile

Typo on dockerfile

โ””[zmdockerfiles/release/el7]> diff Dockerfile.old Dockerfile.fixed 
67c67
< #    -e ZM_DB_NAME='zmuser' \
---
> #    -e ZM_DB_USER='zmuser' \
93c93
< #    -e ZM_DB_NAME='zmuser' \
---
> #    -e ZM_DB_USER='zmuser' \

To-Do Punchlist

Here is my short term roadmap:

  • verify the API works
  • verify commit ZoneMinder/zoneminder@c0955e0 fixed issue with CakePHP temp folder
  • modify zmlinkcontent.sh to no longer create symlinks in the webroot because master branch no longer needs these. Then verify the Docker container is unaffected.
  • modify zmlinkcontent.sh to create & set permissions on zm's log folder
  • Master branch supports drop-in config files into /etc/zm/conf.d subfolder. Consider creating new config files rather than directly editing zm.conf. Going to punt on this for now to maintain backwards compatibility.
  • Troubleshoot runtime error /bin/sh: 1: [: missing ]
  • review /ustils/docker/start.sh and eliminate redundant or obsolete code
  • write el7 Dockerfile
  • troubleshoot streaming not working when hashed authentication is enabled The local timezone in the container os was incorrect. Correcting this corrected the streaming issue when hashed authentication was enabled.
  • ensure proper timezone is set in local os, php, and mysql

unable to access web panel after latest commit

after the latest commit, you are unable to access the web panel of ZM

it appears the line that links the apache config needed for zoneminder has been removed

# Configure Apache
RUN ln -sf /etc/zm/www/zoneminder.conf /etc/httpd/conf.d/
RUN echo "ServerName localhost" > /etc/httpd/conf.d/servername.conf
RUN echo -e "# Redirect the webroot to /zm\nRedirectMatch permanent ^/$ /zm" > /etc/httpd/conf.d/redirect.conf

please can you revert the commit?

Unable to access zoneminder web interface when running from docker

I am trying to follow the instructions and run the zoneminder in a docker container (OS ubuntu 18.04). Here is the exact command I run from readme:

docker run -d -t -p 1080:80 \ -e TZ='Europe/London' \ -v ~/zoneminder/events:/var/cache/zoneminder/events \ -v ~/zoneminder/images:/var/cache/zoneminder/images \ -v ~/zoneminder/mysql:/var/lib/mysql \ -v ~/zoneminder/logs:/var/log/zm \ --shm-size="512m" \ --name zoneminder \ zoneminderhq/zoneminder:latest-ubuntu18.04

Then I go to the browser and type:

http://ip-address:1080/zm

However, it throws 404 error. I have tried to run zoneminder without docker and it worked fine.

Could you let me know if there are any additional steps required?

Starting ZoneMinder video surveillance recorder ...failed!

Dockerfile:
zoneminderhq/zoneminder:latest-ubuntu18.04

Started: via docker-compose up

Error:
zoneminder | * Starting MySQL database server service ...done.
zoneminder | * ZoneMinder dB already exists, skipping table creation.
zoneminder | * Starting Apache http web server service ...done.
zoneminder | * Starting ZoneMinder video surveillance recorder ...failed!

I can reach the login screen, but when I login I get a status code of 500. My logs seem to be blank.

It was working fine for a about a month, but stopped working Feb 25 (the last day an event occurred).

System info:
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic

Dev docker image probs

With the development Dockerfile I get:

Cannot add PPA: 'ppa:~iconnor/ubuntu/zoneminder'.
The user named '~iconnor' has no PPA named 'ubuntu/zoneminder'
Please choose from the following available PPAs:
 * 'zoneminder-1.32':  ZoneMinder 1.32
 * 'zoneminder-1.34':  ZoneMinder 1.34
 * 'zoneminder-master':  ZoneMinder Master Snapshots
 * 'zoneminder-master-wsl':  ZoneMinder Master for WSL

until I stuck -1.34 on the end of the ppa name, but then I find that zoneminder turns its nose up at my camera with a log entry:

2020-04-25 17:57:52 | zmc_m1 | ย  | 8618 | ERR | Unable to open input http://192.168.1.120/action/stream?subject=mjpeg&user=admin&pwd=xxx due to: Invalid data found when processing input | zm_ffmpeg_camera.cpp | 379

That's after spinning it up with a script like this:

docker stop zom
docker rm zom 

docker build -t zom .

docker run -d \
--name zom \
--net mydockernet --ip 10.60.0.23 \
--restart unless-stopped \
--shm-size=4096m \
-p 1023:80 \
-v /mnt/silver/zm/zoneminder/events:/var/lib/zoneminder/events \
zom

and just entering the url and the resolution in the add camera dialog, leaving the other settings at default. This works just fine in the docker images from quantumobject and dlangdon and your release ubuntu 18 image, and chrome can show the video from that url. Incidentally, the static files, like images and css, don't appear in the development image either.

ONVIF probe failes to detect cameras, requires --net=host

When used with the default bridge network the ONVIF probe cannot find any cameras on the network.

Since the ONVIF probe requires multicast messages, it will not work in Docker unless it is on the host or a macvlan network.

To enable host networking, add this flag to the docker run command:
--net=host

Not sure if this belongs in the documentation or not, but it is the simplest way to get ZM docker up and running. More experienced Docker users or more complex configurations would likely not want this flag present.

First run of fresh container starts with error

I've built new image and start a fresh container.

Dockerfile ( zmdockerfiles/development/ubuntu/xenial/Dockerfile ) version: 5e73286
Zoneminder version: ZoneMinder/zoneminder@d579faa

docker-compose logs after docker-compose up -d:

++ date
+ echo Fri Mar 29 12:54:33 MSK 2019
Fri Mar 29 12:54:33 MSK 2019
+ docker-compose up -d
Creating network "zoneminderdev_default" with the default driver
Creating zoneminder-dev
+ docker exec -it zoneminder-dev git log --format=%H -n 1
d579faa2913510e4a250d55cdea44606bed26fc0
+ docker-compose logs -f
Attaching to zoneminder-dev
zoneminder-dev | 
zoneminder-dev |  * First run of MYSQL, initializing DB.
zoneminder-dev |  * Starting MySQL database server service   ...done.
zoneminder-dev |  * First run of mysql in the container, creating ZoneMinder dB.
zoneminder-dev | ERROR 1136 (21S01) at line 755: Column count doesn't match value count at row 1
zoneminder-dev |  * Starting Apache http web server service   ...done.

Internal database functionality is broken for release docker file because of mysql unix socket location

The example in the docker file

# docker run -d -t -p 1080:443 \
#    -e TZ='America/Los_Angeles' \
#    -v /disk/zoneminder/events:/var/lib/zoneminder/events \
#    -v /disk/zoneminder/images:/var/lib/zoneminder/images \
#    -v /disk/zoneminder/mysql:/var/lib/mysql \
#    -v /disk/zoneminder/logs:/var/log/zm \
#    --shm-size="512m" \
#    --name zoneminder \
#    zoneminder/zoneminder

results in:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' 

presumably because mysql cant create a named unix socket on the mounted volume in the container.

remote db detection does not appear to be working

Container logs

1d [root:~] # podman logs -f zmz

 * Removing stale lock file
 * Starting MySQL database server service   ...done.
 * Warning: Mysql startup timer expired!
 * Starting Apache http web server service   ...done.
 * Starting ZoneMinder video surveillance recorder   ...done.

Container environment

[root@dumpster /]# env
ZM_DB_PASS=zmpass
HOSTNAME=dumpster.festive.local
TERM=xterm
ZM_DB_HOST=192.168.1.41
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ZM_DB_USER=zmuser
PWD=/
TZ=America/New_York
SHLVL=1
HOME=/root
LESSOPEN=||/usr/bin/lesspipe.sh %s
ZM_DB_NAME=zm
container=podman
_=/usr/bin/env
[root@dumpster /]#     counter=0
[root@dumpster /]#     for CREDENTIAL in $ZM_DB_HOST $ZM_DB_USER $ZM_DB_PASS $ZM_DB_NAME; do
>         if [ -n "$CREDENTIAL" ]; then
>             counter=$((counter+1))
>         fi
>     done
[root@dumpster /]# echo counter
counter
[root@dumpster /]# echo $counter
4

mysql isn't actually running inside the container, but the echo of the counter also isn't happening, either.

Three permissions issues on Ubuntu 18 with a local USB webcam

When creating an issue, please provide the following information:

  • The exact dockerfile you chose to use from this repository
    I did not build the image, I just ran an image from zoneminderhq/zoneminder on dockerhub.
  • Provide the full syntax showing how you started the container from the command line
    Included below.
  • Relevant output indicating the problem.
    I dug through logs to find the problem but didn't include them here as I've just included the fixes. Let me know if you'd like me to pull the actual error messages.

Thanks for providing this! I can easily evaluate zoneminder without having to mess with installing apache or mysql so it's a huge timesaver. However, I have a few problems running on Ubuntu Desktop 18 LTS with a local USB webcam.

This is the command I'm using:

docker run -d -t -p 1080:80 -e TZ='America/Denver' -v ~/zoneminder/events:/var/cache/zoneminder/events -v ~/zoneminder/images:/var/cache/zoneminder/images -v ~/zoneminder/mysql:/var/lib/mysql -v ~/zoneminder/logs:/var/log/zm --device /dev/video0 --shm-size="512m" --name zoneminder zoneminderhq/zoneminder:latest-ubuntu18.04

I added the --device /dev/video0 to make the device available. However this still does not work for the following reasons.
1. www-data does not have write permission to /var/log/zm/:

$ docker exec zoneminder ls -ld /var/log/zm
drwxr-xr-x 2 root root 4096 Nov 29 14:07 /var/log/zm

This is fixed inside the container from the host with:

$ docker exec zoneminder chown -R www-data.www-data /var/log/zm

2. www-data does not have write permission to /var/cache/zoneminder/:

$ docker exec zoneminder ls -ld /var/cache/zoneminder/
drwxr-xr-x 2 root root 4096 Nov 29 14:07 /var/cache/zoneminder

This is fixed inside the container from the host with:

$ docker exec zoneminder chown -R www-data.www-data /var/cache/zoneminder

3. www-data does not have read permission to /dev/video0:

$ docker exec zoneminder ls -l /dev/video0 
crw-rw----+ 1 root video 81, 0 Nov 29 02:00 /dev/video0

This is fixed inside the container from the host with:

$ docker exec zoneminder gpasswd -a www-data video
Adding user www-data to group video

The fixes for 1. and 2. take effect immediately. However, the fix for 3. requires this on the host:

$ docker restart zoneminder

database options will never do anything

https://github.com/ZoneMinder/zmdockerfiles/blob/master/utils/entrypoint.sh#L241

How are any of these going to ever be non-empty strings longer than zero? They're not set anywhere in the file and aren't in the instructions as being environment variables.

Perhaps this should be:

if [ -n "$ZM_DB_HOST" ] && [ -n "$ZM_DB_USER" ] && [ -n "$ZM_DB_PASS" ] && [ -n "$ZM_DB_NAME" ]; then

with the corresponding changes to the sed commands?

Basically zm.conf will never ever be updated in this scenario. Did you mean to document these differently in https://github.com/ZoneMinder/zmdockerfiles/blob/master/release/el7/Dockerfile#L67-L70 ?

release: ERROR: The script cannot find the required command "file".

Hello,

I am playing around with the release version but the container exits with the error code below:
ERROR: The script cannot find the required command "file".

Steps to reproduce the issue:
git clone https://github.com/ZoneMinder/zoneminder
cd ./zmdockerfiles/release/el7/
docker build -t zm .
result is ok "Successfully built c9c3232d8d13
Successfully tagged zm:latest"

I also created a folder structure as below:
mkdir -p /nfs/dlvol01/zm1/events
mkdir -p /nfs/dlvol01/zm1/images
mkdir -p /nfs/dlvol01/zm1/mysql
mkdir -p /nfs/dlvol01/zm1/logs

and started container with:

docker run -d -t -p 1080:80 \
-e TZ='America/Sao_Paulo' \
-v /nfs/dlvol01/zm1/events:/var/lib/zoneminder/events \
-v /nfs/dlvol01/zm1/images:/var/lib/zoneminder/images \
-v /nfs/dlvol01/zm1/mysql:/var/lib/mysql \
-v /nfs/dlvol01/zm1/logs:/var/log/zm \
--shm-size="512m" \
--name zm \
zm

docker ps -a output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
156dc76d48ad zm "/usr/local/bin/entrโ€ฆ" 5 minutes ago Exited (1) 5 minutes ago zm

docker logs 156dc76d48ad

ERROR: The script cannot find the required command "file".

Can't connect to local MySQL server

Hello,
I upgraded my docker image to the latest version today and now the container won't start anymore. The local MySQL database does fails to start.
Docker logs:

 * Starting MySQL database server service   ...done.
 * Warning: Mysql startup timer expired!
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
 * First run of mysql in the container, creating ZoneMinder dB.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
 * Starting Apache http web server service   ...done.
 * Starting ZoneMinder video surveillance recorder   ...failed!

I am using the ubuntu18.04 version of the image, command:

sudo docker run -d -t -p 1080:80 
-e TZ='Europe/Brussels' 
-v /mnt/user/cctv_rec/Zoneminder/events/:/var/cache/zoneminder/events 
-v /mnt/user/cctv_rec/Zoneminder/images/:/var/cache/zoneminder/images 
-v /mnt/user/appdata/Zoneminder/mysql/:/var/lib/mysql 
-v /mnt/user/appdata/Zoneminder/logs/:/var/log/zm 
--name zoneminder_bis zoneminderhq/zoneminder:latest-ubuntu18.04

Maybe it is related to issue #73, but I am not using an external database.

p.s.: It would be nice to have version tags on the docker images, as now I can't even roll back to a previous version.

web_php 90790 ERR Path /var/cache/zoneminder/events does not exist. /usr/share/zoneminder/www/includes/Storage.php 95

Using zoneminderhq/zoneminder:latest-el7 from https://hub.docker.com/r/zoneminderhq/zoneminder/tags, with

sudo docker run -d -t -p 443:443
-e TZ='Europe/Brussels'
--shm-size="512m"
--name zoneminder
--restart=unless-stopped
zoneminderhq/zoneminder:latest-el7

the Zoneminder v1.34.18 log contains a large number of

YYY-MM-DD HH:MM:SS web_php 90790 ERR Path /var/cache/zoneminder/events does not exist. /usr/share/zoneminder/www/includes/Storage.php 95

The published Dockerfile contains
VOLUME /var/lib/zoneminder/events /var/lib/mysql /var/log/zoneminder

should it be /var/cache/zoneminder/events instead of /var/lib/zoneminder/events ?

Running
mkdir -p /var/cache/zoneminder/events
in the container fixes it temporarily.

/zm site not working on ubuntu docker build

I have added the following to my docker-compose file and everything builds and according to the logs it starts. I can access the default Apache site at http://ipaddrr:1080 but using http://ipaddr:1080/zm returns a non working page. I am running docker on a ubuntu 20.04 release but I cannot image that is the problem as the Apache instance within the container is working fine

docker-compose

zoneminder:
image: zoneminderhq/zoneminder:latest-ubuntu18.04
container_name: zoneminder
environment:
- TZ=${TZ}
volumes:
- ${USERDIR}/docker/zm/events:/var/cache/zoneminder/events
- ${USERDIR}/docker/zm/images:/var/cache/zoneminder/images
- ${USERDIR}/docker/zm/mysql:/var/lib/mysql
- ${USERDIR}/docker/zm/logs:/var/log/zm
ports:
- 1080:80

Cannot connect to external database

I tried to create docker with external database, but it's not working. I have several other dockers connected to my database, so it is not my db fault. Also, I checked credentials three times .

Used dockerfile: zoneminderhq/zoneminder:latest-ubuntu18.04
Logs:

 * Remote database credentials detected. Continuing...
 * Looking for remote database server   ...failed!
 * Starting Apache http web server service   ...done.
 * Starting ZoneMinder video surveillance recorder   ...failed!

I tried IP:PORT and DOMAIN:PORT
My port is different than 3306

sudo docker create --name "zoneminder" -t -p 1234:80 \
    -e TZ='Europe/Warsaw' \
    -e ZM_DB_USER='USER' \
    -e ZM_DB_PASS='PW' \
    -e ZM_DB_NAME='DB' \
    -e ZM_DB_HOST='IP:PORT' \
    -v /xxx/events:/var/cache/zoneminder/events \
    -v /xxx/images:/var/cache/zoneminder/images \
    -v /xxx/zoneminder/logs:/var/log/zm \
    --shm-size="6144m" \
    zoneminderhq/zoneminder:latest-ubuntu18.04

This seems similar to #62

MySQL server can't start

I've found a bug on building the Dockerfile from latest Dockerfile. MySQL server can't start. See /var/log/mysql/error.log:

2018-09-29T09:39:33.225679Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-09-29T09:39:34.532144Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-09-29T09:39:34.729063Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-09-29T09:39:34.802924Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 93125299-c3cb-11e8-a4bd-0242ac110003.
2018-09-29T09:39:34.804480Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-09-29T09:39:34.805052Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2018-09-29T09:48:53.259398Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-09-29T09:48:53.259449Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2018-09-29T09:48:53.260379Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.23-0ubuntu0.16.04.1) starting as process 411 ...
2018-09-29T09:48:53.264233Z 0 [Note] InnoDB: PUNCH HOLE support available
2018-09-29T09:48:53.264266Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-09-29T09:48:53.264275Z 0 [Note] InnoDB: Uses event mutexes
2018-09-29T09:48:53.264283Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2018-09-29T09:48:53.264290Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.8
2018-09-29T09:48:53.264298Z 0 [Note] InnoDB: Using Linux native AIO
2018-09-29T09:48:53.264445Z 0 [Note] InnoDB: Number of pools: 1
2018-09-29T09:48:53.264515Z 0 [Note] InnoDB: Using CPU crc32 instructions
2018-09-29T09:48:53.265472Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2018-09-29T09:48:53.269914Z 0 [Note] InnoDB: Completed initialization of buffer pool
2018-09-29T09:48:53.271294Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2018-09-29T09:48:53.281341Z 0 [Note] InnoDB: The first innodb_system data file 'ibdata1' did not exist. A new tablespace will be created!
2018-09-29T09:48:53.281498Z 0 [Note] InnoDB: Setting file './ibdata1' size to 12 MB. Physically writing the file full; Please wait ...
2018-09-29T09:48:53.795953Z 0 [Note] InnoDB: File './ibdata1' size is now 12 MB.
2018-09-29T09:48:53.796210Z 0 [Note] InnoDB: Setting log file ./ib_logfile101 size to 48 MB
2018-09-29T09:48:54.240885Z 0 [Note] InnoDB: Setting log file ./ib_logfile1 size to 48 MB
2018-09-29T09:48:55.120255Z 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2018-09-29T09:48:55.120363Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-09-29T09:48:55.120392Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2018-09-29T09:48:55.120439Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2018-09-29T09:48:55.276016Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2018-09-29T09:48:55.276193Z 0 [Note] InnoDB: Doublewrite buffer not found: creating new
2018-09-29T09:48:55.576817Z 0 [Note] InnoDB: Doublewrite buffer created
2018-09-29T09:48:55.580019Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2018-09-29T09:48:55.580045Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2018-09-29T09:48:55.580140Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-09-29T09:48:55.688122Z 0 [Note] InnoDB: Foreign key constraint system tables created
2018-09-29T09:48:55.688206Z 0 [Note] InnoDB: Creating tablespace and datafile system tables.
2018-09-29T09:48:55.788449Z 0 [Note] InnoDB: Tablespace and datafile system tables created.
2018-09-29T09:48:55.788581Z 0 [Note] InnoDB: Creating sys_virtual system tables.
2018-09-29T09:48:55.877285Z 0 [Note] InnoDB: sys_virtual table created
2018-09-29T09:48:55.877433Z 0 [Note] InnoDB: Waiting for purge to start
2018-09-29T09:48:55.927657Z 0 [Note] InnoDB: 5.7.23 started; log sequence number 0
2018-09-29T09:48:55.928042Z 0 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
2018-09-29T09:48:55.928243Z 0 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2018-09-29T09:48:55.928581Z 0 [Note] Salting uuid generator variables, current_pid: 411, server_start_time: 1538214533, bytes_sent: 0, 
2018-09-29T09:48:55.928622Z 0 [Note] Generated uuid: 'e1874fc3-c3cc-11e8-b86e-0242ac130002', server_start_time: 115686216966294560, bytes_sent: 44727424
2018-09-29T09:48:55.928635Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e1874fc3-c3cc-11e8-b86e-0242ac130002.
2018-09-29T09:48:56.044738Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-09-29T09:48:56.044812Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2018-09-29T09:48:56.044827Z 0 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
2018-09-29T09:48:56.044837Z 0 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
2018-09-29T09:48:56.044863Z 0 [Note] Server socket created on IP: '127.0.0.1'.
2018-09-29T09:48:56.045899Z 0 [Warning] Failed to open optimizer cost constant tables

2018-09-29T09:48:56.046013Z 0 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
2018-09-29T09:48:56.046035Z 0 [ERROR] Fatal error: Failed to initialize ACL/grant/time zones structures or failed to remove temporary table files.
2018-09-29T09:48:56.046085Z 0 [ERROR] Aborting

2018-09-29T09:48:56.046116Z 0 [Note] Binlog end
2018-09-29T09:48:56.046160Z 0 [Note] Shutting down plugin 'ngram'
2018-09-29T09:48:56.046176Z 0 [Note] Shutting down plugin 'partition'
2018-09-29T09:48:56.046185Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2018-09-29T09:48:56.046195Z 0 [Note] Shutting down plugin 'ARCHIVE'
2018-09-29T09:48:56.046204Z 0 [Note] Shutting down plugin 'MEMORY'
2018-09-29T09:48:56.046213Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2018-09-29T09:48:56.046223Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2018-09-29T09:48:56.046232Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2018-09-29T09:48:56.046241Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2018-09-29T09:48:56.046251Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2018-09-29T09:48:56.046259Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2018-09-29T09:48:56.046269Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2018-09-29T09:48:56.046278Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2018-09-29T09:48:56.046287Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2018-09-29T09:48:56.046296Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2018-09-29T09:48:56.046306Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2018-09-29T09:48:56.046315Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2018-09-29T09:48:56.046324Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2018-09-29T09:48:56.046332Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2018-09-29T09:48:56.046341Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2018-09-29T09:48:56.046350Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2018-09-29T09:48:56.046359Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2018-09-29T09:48:56.046368Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2018-09-29T09:48:56.046377Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2018-09-29T09:48:56.046386Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2018-09-29T09:48:56.046394Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2018-09-29T09:48:56.046403Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2018-09-29T09:48:56.046412Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2018-09-29T09:48:56.046424Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2018-09-29T09:48:56.046434Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2018-09-29T09:48:56.046443Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2018-09-29T09:48:56.046452Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2018-09-29T09:48:56.046461Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2018-09-29T09:48:56.046470Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2018-09-29T09:48:56.046478Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2018-09-29T09:48:56.046491Z 0 [Note] Shutting down plugin 'InnoDB'
2018-09-29T09:48:56.046544Z 0 [Note] InnoDB: FTS optimize thread exiting.
2018-09-29T09:48:56.046585Z 0 [Note] InnoDB: Starting shutdown...
2018-09-29T09:48:56.146769Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2018-09-29T09:48:56.146858Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 180929 12:48:56
2018-09-29T09:48:57.978041Z 0 [Note] InnoDB: Shutdown completed; log sequence number 1209961
2018-09-29T09:48:57.980898Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2018-09-29T09:48:57.980947Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2018-09-29T09:48:57.980967Z 0 [Note] Shutting down plugin 'MyISAM'
2018-09-29T09:48:57.980993Z 0 [Note] Shutting down plugin 'CSV'
2018-09-29T09:48:57.981010Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2018-09-29T09:48:57.981072Z 0 [Note] Shutting down plugin 'sha256_password'
2018-09-29T09:48:57.981088Z 0 [Note] Shutting down plugin 'mysql_native_password'
2018-09-29T09:48:57.981342Z 0 [Note] Shutting down plugin 'binlog'
2018-09-29T09:48:57.982144Z 0 [Note] /usr/sbin/mysqld: Shutdown complete

Entrypoint attempts to tail an invalid path

entrypoint.sh executes tail -F /var/log/zoneminder/zm*.log which fails, because /var/log/zoneminder/ does not exist, but /var/log/zm/ does.

Steps to reproduce

$ docker exec -ti $(docker ps|grep zoneminder|awk '{print $1}') bash
$ tail -F /var/log/zoneminder/zm*.log
tail: cannot open '/var/log/zoneminder/zm*.log' for reading: No such file or directory

Suggested Fix

I tested this fix on zoneminderhq/zoneminder:latest-ubuntu18.04:

tail -F /var/log/zm/*.log

undefined variable in entrypoint.sh

I'm using the latest commit from master branch. After start my docker container i watch in container logs the string:

Removing stale lock file

the full log:

root@office:/home/system/docker/zoneminder_dev# docker-compose logs -f
Attaching to zoneminder-dev
zoneminder-dev |
zoneminder-dev |  * Removing stale lock file
zoneminder-dev | DEBUG:
zoneminder-dev |
zoneminder-dev |  * Starting MySQL database server service   ...done.
zoneminder-dev |  * ZoneMinder dB already exists, skipping table creation.
zoneminder-dev |  * Starting Apache http web server service   ...done.
zoneminder-dev |  * Starting ZoneMinder video surveillance recorder   ...done.
^CERROR: Aborting.
root@office:/home/system/docker/zoneminder_dev#

After inspect the code, also with grep:

root@office:/home/system/docker/zoneminder_dev# grep mypidsocklock zm/image/entrypoint.sh
    elif [ -e ${mypidsocklock} ]; then
        rm -f ${mypidsocklock}
    echo ${mypidsocklock}
root@office:/home/system/docker/zoneminder_dev#

i see no reason to use this variable. where i'm wrong?

HTTP 500 after first install

I ran:

docker run -d -t -p 1080:80 -e TZ='America/Los_Angeles' -v ~/zoneminder/events:/var/cache/zoneminder/events -v ~/zoneminder/images:/var/cache/zoneminder/images -v ~/zoneminder/mysql:/var/lib/mysql -v ~/zoneminder/logs:/var/log/zm --shm-size="512m" --name zoneminder zoneminderhq/zoneminder:latest-ubuntu18.04

Followed by:

docker logs -f <container id>

It outputs:

 * First run of MYSQL, initializing DB.
 * Starting MySQL database server service   ...done.
 * First run of mysql in the container, creating ZoneMinder dB.
 * Starting Apache http web server service   ...done.
 * Starting ZoneMinder video surveillance recorder   ...done.

Surfing to http://localhost:1080 gives the Apache welcome page. Surfing to http://localhost:1080/zm gives an HTTP 500 error and no additional log output for the container.

zmaudit.pl won't start, missing perl module

I've found a bug on building the Dockerfile from latest Dockerfile. zmaudit.pl can't start because Number::Bytes::Human perl module not installed. Should it be installed by Dockerfile or this is a missed dependency in code base project?

Output:

root@1aa81184bbda:/ZoneMinder# zmaudit.pl 
09/29/18 13:28:28.508840 zmaudit[567].FAT [main:109] [zmaudit.pl appears to already be running at pid 529. If not, please delete /var/run/zm/zmaudit.pid or use the --force command line option.]
root@1aa81184bbda:/ZoneMinder# rm /var/run/zm/zmaudit.pid
root@1aa81184bbda:/ZoneMinder# zmaudit.pl 
Can't locate Number/Bytes/Human.pm in @INC (you may need to install the Number::Bytes::Human module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/ZoneMinder/Event.pm line 39.
Compilation failed in require at /usr/local/bin/zmaudit.pl line 143.
root@1aa81184bbda:/ZoneMinder# 

Of course, manual installation will fix the issue:

root@1aa81184bbda:/ZoneMinder# cpan Number::Bytes::Human
Loading internal null logger. Install Log::Log4perl for logging messages

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] Fetching with LWP:
http://www.cpan.org/authors/01mailrc.txt.gz
Reading '/root/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with LWP:
http://www.cpan.org/modules/02packages.details.txt.gz
Reading '/root/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Sat, 29 Sep 2018 10:17:02 GMT
.............
  New CPAN.pm version (v2.16) available.
  [Currently running version is v2.11]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.


...............................................................DONE
Fetching with LWP:
http://www.cpan.org/modules/03modlist.data.gz
Reading '/root/.cpan/sources/modules/03modlist.data.gz'
DONE
Writing /root/.cpan/Metadata
Running install for module 'Number::Bytes::Human'
Fetching with LWP:
http://www.cpan.org/authors/id/F/FE/FERREIRA/Number-Bytes-Human-0.11.tar.gz
Fetching with LWP:
http://www.cpan.org/authors/id/F/FE/FERREIRA/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/F/FE/FERREIRA/Number-Bytes-Human-0.11.tar.gz ok
'YAML' not installed, will not store persistent state
Configuring F/FE/FERREIRA/Number-Bytes-Human-0.11.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Number::Bytes::Human
Writing MYMETA.yml and MYMETA.json
  FERREIRA/Number-Bytes-Human-0.11.tar.gz
  /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
Running make for F/FE/FERREIRA/Number-Bytes-Human-0.11.tar.gz
---- Unsatisfied dependencies detected during ----
----  FERREIRA/Number-Bytes-Human-0.11.tar.gz ----
    Test::Pod [build_requires,optional]
    Test::Pod::Coverage [build_requires,optional]
cp Human.pm blib/lib/Number/Bytes/Human.pm
Manifying 1 pod document
  FERREIRA/Number-Bytes-Human-0.11.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# Testing Number::Bytes::Human 0.11, Perl 5.022001, /usr/bin/perl
t/01use.t ........... ok
t/02basic.t ......... ok
t/03large.t ......... ok
t/04base1000.t ...... ok
t/05zero.t .......... ok
t/06si.t ............ ok
t/07unit.t .......... ok
t/08base1M.t ........ ok
t/10parse_args.t .... ok
t/20oo.t ............ ok
t/90pod.t ........... skipped: Test::Pod 1.18 required for testing POD
t/98pod-coverage.t .. skipped: Test::Pod::Coverage 1.04 required for testing POD coverage
All tests successful.
Files=12, Tests=207,  0 wallclock secs ( 0.05 usr  0.00 sys +  0.17 cusr  0.01 csys =  0.23 CPU)
Result: PASS
  FERREIRA/Number-Bytes-Human-0.11.tar.gz
  /usr/bin/make test -- OK
Running make install
Manifying 1 pod document
Installing /usr/local/share/perl/5.22.1/Number/Bytes/Human.pm
Installing /usr/local/man/man3/Number::Bytes::Human.3pm
Appending installation info to /usr/local/lib/x86_64-linux-gnu/perl/5.22.1/perllocal.pod
  FERREIRA/Number-Bytes-Human-0.11.tar.gz
  /usr/bin/make install  -- OK
Running install for module 'Test::Pod::Coverage'
Fetching with LWP:
http://www.cpan.org/authors/id/N/NE/NEILB/Test-Pod-Coverage-1.10.tar.gz
Fetching with LWP:
http://www.cpan.org/authors/id/N/NE/NEILB/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/N/NE/NEILB/Test-Pod-Coverage-1.10.tar.gz ok
Configuring N/NE/NEILB/Test-Pod-Coverage-1.10.tar.gz with Makefile.PL
Warning: prerequisite Pod::Coverage 0 not found.
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Test::Pod::Coverage
Writing MYMETA.yml and MYMETA.json
  NEILB/Test-Pod-Coverage-1.10.tar.gz
  /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
Running make for N/NE/NEILB/Test-Pod-Coverage-1.10.tar.gz
---- Unsatisfied dependencies detected during ----
----    NEILB/Test-Pod-Coverage-1.10.tar.gz   ----
    Pod::Coverage [requires]
Running install for module 'Pod::Coverage'
Fetching with LWP:
http://www.cpan.org/authors/id/R/RC/RCLAMP/Pod-Coverage-0.23.tar.gz
Fetching with LWP:
http://www.cpan.org/authors/id/R/RC/RCLAMP/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/R/RC/RCLAMP/Pod-Coverage-0.23.tar.gz ok
Configuring R/RC/RCLAMP/Pod-Coverage-0.23.tar.gz with Makefile.PL
Warning: prerequisite Devel::Symdump 2.01 not found.
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Pod::Coverage
Writing MYMETA.yml and MYMETA.json
  RCLAMP/Pod-Coverage-0.23.tar.gz
  /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
Running make for R/RC/RCLAMP/Pod-Coverage-0.23.tar.gz
---- Unsatisfied dependencies detected during ----
----      RCLAMP/Pod-Coverage-0.23.tar.gz     ----
    Devel::Symdump [requires]
Running install for module 'Devel::Symdump'
Fetching with LWP:
http://www.cpan.org/authors/id/A/AN/ANDK/Devel-Symdump-2.18.tar.gz
Fetching with LWP:
http://www.cpan.org/authors/id/A/AN/ANDK/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/A/AN/ANDK/Devel-Symdump-2.18.tar.gz ok
Configuring A/AN/ANDK/Devel-Symdump-2.18.tar.gz with Makefile.PL
Require Devel::Symdump from the local tarball.
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Devel::Symdump
Writing MYMETA.yml and MYMETA.json
  ANDK/Devel-Symdump-2.18.tar.gz
  /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
Running make for A/AN/ANDK/Devel-Symdump-2.18.tar.gz
cp lib/Devel/Symdump.pm blib/lib/Devel/Symdump.pm
cp lib/Devel/Symdump/Export.pm blib/lib/Devel/Symdump/Export.pm
Manifying 1 pod document
  ANDK/Devel-Symdump-2.18.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/autogen.t ................. ok
t/diff.t .................... ok
t/export.t .................. ok
t/glob_to_local_typeglob.t .. skipped: test only run when envariable AUTHOR_TEST is set
t/pod.t ..................... skipped: test only run when envariable AUTHOR_TEST is set
t/podcover.t ................ skipped: test only run when envariable AUTHOR_TEST is set
t/recur.t ................... ok
t/symdump.t ................. ok
t/tree.t .................... ok
All tests successful.
Files=9, Tests=29,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.08 cusr  0.00 csys =  0.10 CPU)
Result: PASS
  ANDK/Devel-Symdump-2.18.tar.gz
  /usr/bin/make test -- OK
Running make install
Manifying 1 pod document
Installing /usr/local/share/perl/5.22.1/Devel/Symdump.pm
Installing /usr/local/share/perl/5.22.1/Devel/Symdump/Export.pm
Installing /usr/local/man/man3/Devel::Symdump.3pm
Appending installation info to /usr/local/lib/x86_64-linux-gnu/perl/5.22.1/perllocal.pod
  ANDK/Devel-Symdump-2.18.tar.gz
  /usr/bin/make install  -- OK
  RCLAMP/Pod-Coverage-0.23.tar.gz
  Has already been unwrapped into directory /root/.cpan/build/Pod-Coverage-0.23-pYk_0B
  RCLAMP/Pod-Coverage-0.23.tar.gz
  Has already been prepared
Running make for R/RC/RCLAMP/Pod-Coverage-0.23.tar.gz
cp lib/Pod/Coverage/Overloader.pm blib/lib/Pod/Coverage/Overloader.pm
cp lib/Pod/Coverage.pm blib/lib/Pod/Coverage.pm
cp lib/Pod/Coverage/ExportOnly.pm blib/lib/Pod/Coverage/ExportOnly.pm
cp lib/Pod/Coverage/CountParents.pm blib/lib/Pod/Coverage/CountParents.pm
cp bin/pod_cover blib/script/pod_cover
"/usr/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/pod_cover
Manifying 4 pod documents
  RCLAMP/Pod-Coverage-0.23.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01compile.t ..... ok
t/02simple.t ...... ok
t/03import.t ...... ok
t/04cvgv.t ........ ok
t/05parentage.t ... ok
t/06trustme.t ..... ok
t/07pod.t ......... skipped: Test::Pod 1.00 required for testing POD
t/08tie.t ......... ok
t/09whitespace.t .. ok
All tests successful.
Files=9, Tests=69,  0 wallclock secs ( 0.03 usr  0.00 sys +  0.24 cusr  0.01 csys =  0.28 CPU)
Result: PASS
  RCLAMP/Pod-Coverage-0.23.tar.gz
  /usr/bin/make test -- OK
Running make install
Manifying 4 pod documents
Installing /usr/local/share/perl/5.22.1/Pod/Coverage.pm
Installing /usr/local/share/perl/5.22.1/Pod/Coverage/CountParents.pm
Installing /usr/local/share/perl/5.22.1/Pod/Coverage/ExportOnly.pm
Installing /usr/local/share/perl/5.22.1/Pod/Coverage/Overloader.pm
Installing /usr/local/man/man3/Pod::Coverage::CountParents.3pm
Installing /usr/local/man/man3/Pod::Coverage::ExportOnly.3pm
Installing /usr/local/man/man3/Pod::Coverage.3pm
Installing /usr/local/man/man3/Pod::Coverage::Overloader.3pm
Installing /usr/local/bin/pod_cover
Appending installation info to /usr/local/lib/x86_64-linux-gnu/perl/5.22.1/perllocal.pod
  RCLAMP/Pod-Coverage-0.23.tar.gz
  /usr/bin/make install  -- OK
  NEILB/Test-Pod-Coverage-1.10.tar.gz
  Has already been unwrapped into directory /root/.cpan/build/Test-Pod-Coverage-1.10-HSDHnV
  NEILB/Test-Pod-Coverage-1.10.tar.gz
  Has already been prepared
Running make for N/NE/NEILB/Test-Pod-Coverage-1.10.tar.gz
cp lib/Test/Pod/Coverage.pm blib/lib/Test/Pod/Coverage.pm
Manifying 1 pod document
  NEILB/Test-Pod-Coverage-1.10.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# Testing Test::Pod::Coverage 1.10
t/00.load.t .............. ok
t/all_modules.t .......... ok
t/all_pod_coverage_ok.t .. ok
t/alt_class.t ............ ok
t/nopod.t ................ ok
t/nosymbols.t ............ ok
t/parms.t ................ ok
t/pod.t .................. skipped: Test::Pod 1.14 required for testing POD
t/privates.t ............. ok
t/self.t ................. ok
t/simple.t ............... ok
All tests successful.
Files=11, Tests=22,  1 wallclock secs ( 0.03 usr  0.00 sys +  0.28 cusr  0.02 csys =  0.33 CPU)
Result: PASS
  NEILB/Test-Pod-Coverage-1.10.tar.gz
  /usr/bin/make test -- OK
Running make install
Manifying 1 pod document
Installing /usr/local/share/perl/5.22.1/Test/Pod/Coverage.pm
Installing /usr/local/man/man3/Test::Pod::Coverage.3pm
Appending installation info to /usr/local/lib/x86_64-linux-gnu/perl/5.22.1/perllocal.pod
  NEILB/Test-Pod-Coverage-1.10.tar.gz
  /usr/bin/make install  -- OK
Running install for module 'Test::Pod'
Fetching with LWP:
http://www.cpan.org/authors/id/E/ET/ETHER/Test-Pod-1.52.tar.gz
Fetching with LWP:
http://www.cpan.org/authors/id/E/ET/ETHER/CHECKSUMS
Checksum for /root/.cpan/sources/authors/id/E/ET/ETHER/Test-Pod-1.52.tar.gz ok
Configuring E/ET/ETHER/Test-Pod-1.52.tar.gz with Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Test::Pod
Writing MYMETA.yml and MYMETA.json
  ETHER/Test-Pod-1.52.tar.gz
  /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK
Running make for E/ET/ETHER/Test-Pod-1.52.tar.gz
cp lib/Test/Pod.pm blib/lib/Test/Pod.pm
Manifying 1 pod document
  ETHER/Test-Pod-1.52.tar.gz
  /usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# Testing Test::Pod 1.52, Perl 5.022001, /usr/bin/perl
# Using Pod::Simple 3.29
t/00-load.t ............ ok
t/all_pod_files.t ...... ok
t/cut-outside-block.t .. ok
t/good.t ............... ok
t/item-ordering.t ...... ok
t/load.t ............... ok
t/missing-file.t ....... ok
t/selftest.t ........... ok
t/spaced-directives.t .. skipped: Not written yet
t/unknown-directive.t .. ok
All tests successful.
Files=10, Tests=19,  1 wallclock secs ( 0.02 usr  0.00 sys +  0.21 cusr  0.02 csys =  0.25 CPU)
Result: PASS
  ETHER/Test-Pod-1.52.tar.gz
  /usr/bin/make test -- OK
Running make install
Manifying 1 pod document
Installing /usr/local/share/perl/5.22.1/Test/Pod.pm
Installing /usr/local/man/man3/Test::Pod.3pm
Appending installation info to /usr/local/lib/x86_64-linux-gnu/perl/5.22.1/perllocal.pod
  ETHER/Test-Pod-1.52.tar.gz
  /usr/bin/make install  -- OK

root@1aa81184bbda:/ZoneMinder# zmaudit.pl 
09/29/18 13:31:22.355459 zmaudit[1224].INF [main:197] [Auditing All Storage Areas]
Deleted 0 log table entries by time
root@1aa81184bbda:/ZoneMinder# 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.