diff --git a/release/ubuntu22.04/Dockerfile b/release/ubuntu22.04/Dockerfile new file mode 100644 index 0000000..d05aeba --- /dev/null +++ b/release/ubuntu22.04/Dockerfile @@ -0,0 +1,29 @@ +FROM ubuntu:22.04 +MAINTAINER Rayfalling Wang + +# Update base packages +RUN apt update && apt upgrade --assume-yes + +# Install pre-reqs +RUN apt install --assume-yes --no-install-recommends software-properties-common gpg gpg-agent + +# Configure Zoneminder PPA +RUN add-apt-repository ppa:iconnor/zoneminder-1.36 \ + && apt update + +# Install zoneminder +RUN DEBIAN_FRONTEND=noninteractive apt install --assume-yes zoneminder \ + && a2enconf zoneminder \ + && a2enmod rewrite cgi \ + && service apache2 restart + +# Setup Volumes +VOLUME /var/cache/zoneminder/events /var/cache/zoneminder/images /var/lib/mysql /var/log/zm + +# Expose http port +EXPOSE 80 + +# Configure entrypoint +COPY utils/entrypoint.sh /usr/local/bin/ +RUN chmod 755 /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] diff --git a/release/ubuntu22.04/README.md b/release/ubuntu22.04/README.md new file mode 100644 index 0000000..7a66a6a --- /dev/null +++ b/release/ubuntu22.04/README.md @@ -0,0 +1,18 @@ +# Usage + +The Docker images is not current available from the Docker Hub +You should build it yourself + +```bash +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-ubuntu22.04 +``` + +Once the container is running you will need to browse to http://hostname:port/zm to access the Zoneminder interface. diff --git a/utils/entrypoint.sh b/utils/entrypoint.sh index 3e08492..6e8bef1 100755 --- a/utils/entrypoint.sh +++ b/utils/entrypoint.sh @@ -357,6 +357,11 @@ start_zoneminder () { fi } +correct_permission () { + # warn log: Cannot write to event folder /var/cache/zoneminder/events. Check that it exists and is owned by the web account user. + chown -R www-data:www-data /var/cache/zoneminder/events /var/cache/zoneminder/images /var/log/zm +} + cleanup () { echo " * SIGTERM received. Cleaning up before exiting..." kill $mysqlpid > /dev/null 2>&1 @@ -405,6 +410,7 @@ else mysql -u root -e "CREATE USER 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';" mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'zmuser'@'localhost';" + mysql -u root -e "ALTER USER 'zmuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'zmpass';" if [ "$(zm_db_exists)" -eq "0" ]; then echo " * First run of mysql in the container, creating ZoneMinder dB." @@ -412,6 +418,9 @@ else else echo " * ZoneMinder dB already exists, skipping table creation." fi + + # This fix connection failed for tcp connection to mysql + sed -i -e "s/ZM_DB_HOST=.*$/ZM_DB_HOST=127.0.0.1/g" $ZMCONF fi # Ensure we shutdown our services cleanly when we are told to stop @@ -423,5 +432,8 @@ start_http # Start ZoneMinder start_zoneminder +# Update permission +correct_permission + # tail logs while running tail -F /var/log/zoneminder/zm*.log /var/log/zm/zm*.log