diff --git a/2.11/Dockerfile b/2.11/Dockerfile index 948d858..d52563e 100644 --- a/2.11/Dockerfile +++ b/2.11/Dockerfile @@ -1,74 +1,71 @@ FROM ubuntu:22.04 -ENV OCS_VERSION 2.11.0 +ENV OCS_VERSION 2.11.1 -LABEL maintainer="contact@ocsinventory-ng.org" \ +LABEL Maintainer="contact@ocsinventory-ng.org" \ version="${OCS_VERSION}" \ description="OCS Inventory docker image" -ARG APT_FLAGS="-y" - ENV APACHE_RUN_USER=www-data APACHE_RUN_GROUP=www-data \ APACHE_LOG_DIR=/var/log/apache2 APACHE_PID_FILE=/var/run/apache2/apache2.pid APACHE_RUN_DIR=/var/run/apache2 APACHE_LOCK_DIR=/var/lock/apache2 \ OCS_DB_SERVER=dbsrv OCS_DB_PORT=3306 OCS_DB_USER=ocs OCS_DB_PASS=ocs OCS_DB_NAME=ocsweb \ OCS_LOG_DIR=/var/log/ocsinventory-server OCS_VARLIB_DIR=/var/lib/ocsinventory-reports/ OCS_WEBCONSOLE_DIR=/usr/share/ocsinventory-reports \ OCS_PERLEXT_DIR=/etc/ocsinventory-server/perl/ OCS_PLUGINSEXT_DIR=/etc/ocsinventory-server/plugins/ \ OCS_SSL_ENABLED=0 OCS_SSL_WEB_MODE=DISABLED OCS_SSL_COM_MODE=DISABLED OCS_SSL_KEY=/path/to/key OCS_SSL_CERT=/path/to/cert OCS_SSL_CA=/path/to/ca \ - TZ=Europe/Paris - -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -VOLUME /var/lib/ocsinventory-reports /etc/ocsinventory-server /usr/share/ocsinventory-reports/ocsreports/extensions + OCS_INSTALL_ENABLED=0 TZ=Europe/Paris -RUN apt-get update && apt-get install -y \ - wget \ - curl \ - make \ - perl \ - apache2 \ - php \ - libxml-simple-perl \ - libdbi-perl \ - libdbd-mysql-perl \ - libapache-dbi-perl \ - libnet-ip-perl \ - libsoap-lite-perl \ - libarchive-zip-perl \ - libswitch-perl \ - libmojolicious-perl \ - libplack-perl \ - build-essential \ - php-pclzip \ - php-mbstring \ - php-soap \ - php-mysql \ - php-curl \ - php-xml \ - php-zip \ - php-gd \ - php-ldap +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \ + # install necessary packages + && apt-get update && apt-get install --no-install-recommends -y \ + cron \ + wget \ + curl \ + make \ + perl \ + build-essential \ + apache2 \ + php \ + libxml-simple-perl \ + libdbi-perl \ + libdbd-mysql-perl \ + libapache-dbi-perl \ + libnet-ip-perl \ + libsoap-lite-perl \ + libarchive-zip-perl \ + libswitch-perl \ + libmojolicious-perl \ + libplack-perl \ + php-pclzip \ + php-mbstring \ + php-soap \ + php-mysql \ + php-curl \ + php-xml \ + php-zip \ + php-gd \ + php-ldap \ + # build perl module + && wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/${OCS_VERSION}/OCSNG_UNIX_SERVER-${OCS_VERSION}.tar.gz -P /tmp \ + && tar xzf /tmp/OCSNG_UNIX_SERVER-${OCS_VERSION}.tar.gz -C /tmp \ + && cd /tmp/OCSNG_UNIX_SERVER-${OCS_VERSION}/Apache/ \ + && perl Makefile.PL \ + && make \ + && make install \ + # remove unnecessary packages and apt cache + && apt-get remove -y --purge wget curl make build-essential \ + && apt-get remove --purge --auto-remove -y && rm -rf /var/lib/apt/lists/* \ + # Redirect Apache2 Logs to stdout e stderr + && ln -sf /proc/self/fd/1 /var/log/apache2/access.log \ + && ln -sf /proc/self/fd/2 /var/log/apache2/error.log -RUN wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/${OCS_VERSION}/OCSNG_UNIX_SERVER-${OCS_VERSION}.tar.gz -P /tmp && \ - tar xzf /tmp/OCSNG_UNIX_SERVER-${OCS_VERSION}.tar.gz -C /tmp; - -RUN cd /tmp/OCSNG_UNIX_SERVER-${OCS_VERSION}/Apache/ && \ - perl Makefile.PL && \ - make && \ - make install - -WORKDIR /etc/apache2/conf-available -# Redirect Apache2 Logs to stdout e stderr -RUN ln -sf /proc/self/fd/1 /var/log/apache2/access.log && \ - ln -sf /proc/self/fd/2 /var/log/apache2/error.log +VOLUME /var/lib/ocsinventory-reports /etc/ocsinventory-server /usr/share/ocsinventory-reports/ocsreports/extensions +EXPOSE 80 COPY conf/ /tmp/conf - COPY ./docker-entrypoint.sh /docker-entrypoint.sh COPY ./docker-entrypoint.d /docker-entrypoint.d -EXPOSE 80 - -# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#entrypoint +WORKDIR /etc/apache2/conf-available ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["/usr/sbin/apache2", "-DFOREGROUND"] +CMD ["/usr/sbin/apache2", "-DFOREGROUND"] \ No newline at end of file diff --git a/2.11/docker-compose.yml b/2.11/docker-compose.yml index dbdb1ce..54dbcd9 100644 --- a/2.11/docker-compose.yml +++ b/2.11/docker-compose.yml @@ -12,6 +12,8 @@ services: - "ocsreportsdata:/usr/share/ocsinventory-reports/ocsreports/extensions" - "varlibdata:/var/lib/ocsinventory-reports" - "httpdconfdata:/etc/apache2/conf-available" + # make use of cron with crontab inside of container by mounting the specified file + # - "./crontab:/etc/cron/docker-crontab" environment: OCS_DB_SERVER: ocsinventory-db OCS_DB_USER: ocsuser @@ -19,6 +21,9 @@ services: OCS_DB_NAME: ocsweb # See documentation to set up SSL for MySQL OCS_SSL_ENABLED: 0 + # Enable with 1 to be able to use install.php, if + # you do not already have a DB + OCS_INSTALL_ENABLED: 0 links: - ocsdb networks: diff --git a/2.11/docker-entrypoint.d/10-com-server.sh b/2.11/docker-entrypoint.d/10-com-server.sh index bfd4732..3057f65 100644 --- a/2.11/docker-entrypoint.d/10-com-server.sh +++ b/2.11/docker-entrypoint.d/10-com-server.sh @@ -14,15 +14,15 @@ fi # Configure z-ocsinventory-server file if [ ! -f ${SRV_CONF_FILE} ]; then cp /tmp/conf/ocsinventory-server.conf ${SRV_CONF_FILE} - sed -i 's/VERSION_MP/2/g' ${SRV_CONF_FILE} - sed -i 's/DATABASE_SERVER/'"$OCS_DB_SERVER"'/g' ${SRV_CONF_FILE} - sed -i 's/DATABASE_PORT/'"$OCS_DB_PORT"'/g' ${SRV_CONF_FILE} - sed -i 's/DATABASE_NAME/'"$OCS_DB_NAME"'/g' ${SRV_CONF_FILE} - sed -i 's/DATABASE_USER/'"$OCS_DB_USER"'/g' ${SRV_CONF_FILE} - sed -i 's/DATABASE_PASSWD/'"$OCS_DB_PASS"'/g' ${SRV_CONF_FILE} - sed -i 's/"PATH_TO_LOG_DIRECTORY"/'"${OCS_LOG_DIR//\//\\/}"'/g' ${SRV_CONF_FILE} - sed -i 's/"PATH_TO_PLUGINS_PERL_DIRECTORY"/'"${OCS_PERLEXT_DIR//\//\\/}"'/g' ${SRV_CONF_FILE} - sed -i 's/"PATH_TO_PLUGINS_CONFIG_DIRECTORY"/'"${OCS_PLUGINSEXT_DIR//\//\\/}"'/g' ${SRV_CONF_FILE} + perl -i -p -e 's/VERSION_MP/2/g' ${SRV_CONF_FILE} + perl -i -p -e 's/DATABASE_SERVER/$ENV{OCS_DB_SERVER}/g' ${SRV_CONF_FILE} + perl -i -p -e 's/DATABASE_PORT/$ENV{OCS_DB_PORT}/g' ${SRV_CONF_FILE} + perl -i -p -e 's/DATABASE_NAME/$ENV{OCS_DB_NAME}/g' ${SRV_CONF_FILE} + perl -i -p -e 's/DATABASE_USER/$ENV{OCS_DB_USER}/g' ${SRV_CONF_FILE} + perl -i -p -e 's/DATABASE_PASSWD/$ENV{OCS_DB_PASS}/g' ${SRV_CONF_FILE} + perl -i -p -e 's/"PATH_TO_LOG_DIRECTORY"/$ENV{OCS_LOG_DIR}/g' ${SRV_CONF_FILE} + perl -i -p -e 's/"PATH_TO_PLUGINS_PERL_DIRECTORY"/$ENV{OCS_PERLEXT_DIR}/g' ${SRV_CONF_FILE} + perl -i -p -e 's/"PATH_TO_PLUGINS_CONFIG_DIRECTORY"/$ENV{OCS_PLUGINSEXT_DIR}/g' ${SRV_CONF_FILE} fi # Replace Variables @@ -45,4 +45,4 @@ fi chown -R $APACHE_RUN_USER: $OCS_LOG_DIR # Enable conf -a2enconf z-ocsinventory-server +a2enconf z-ocsinventory-server \ No newline at end of file diff --git a/2.11/docker-entrypoint.d/20-web-console.sh b/2.11/docker-entrypoint.d/20-web-console.sh index 925df7a..75d8886 100644 --- a/2.11/docker-entrypoint.d/20-web-console.sh +++ b/2.11/docker-entrypoint.d/20-web-console.sh @@ -4,44 +4,44 @@ REPORTS_CONF_FILE="/etc/apache2/conf-available/ocsinventory-reports.conf" DB_CONFIG_INC_FILE="${OCS_WEBCONSOLE_DIR}/ocsreports/dbconfig.inc.php" if [ ! -z "${OCS_DISABLE_WEB_MODE}" ]; then - echo "+---------------------------------------------------------------------------+" - echo "| Warning: OCS_DISABLE_WEB_MODE environment variable is set! |" - echo "| Administration console, which allows administrators to query the database |" - echo "| server using their favorite browser (Apache, php) will be DISABLED! |" - echo "+---------------------------------------------------------------------------+" - exit 0 + echo "+---------------------------------------------------------------------------+" + echo "| Warning: OCS_DISABLE_WEB_MODE environment variable is set! |" + echo "| Administration console, which allows administrators to query the database |" + echo "| server using their favorite browser (Apache, php) will be DISABLED! |" + echo "+---------------------------------------------------------------------------+" + exit 0 fi if [ ! -f $OCS_WEBCONSOLE_DIR/ocsreports/var.php ]; then - cp -r /tmp/OCSNG_UNIX_SERVER-${OCS_VERSION}/ocsreports/ ${OCS_WEBCONSOLE_DIR} - rm -rf ${DB_CONFIG_INC_FILE} + cp -r /tmp/OCSNG_UNIX_SERVER-${OCS_VERSION}/ocsreports/ ${OCS_WEBCONSOLE_DIR} + rm -rf ${DB_CONFIG_INC_FILE} fi # Configure ocsinventory-reports file if [ ! -f ${REPORTS_CONF_FILE} ]; then - cp /tmp/conf/ocsinventory-reports.conf ${REPORTS_CONF_FILE} - sed -i 's/OCSREPORTS_ALIAS/\/ocsreports/g' ${REPORTS_CONF_FILE} - sed -i 's/PATH_TO_OCSREPORTS_DIR/'"${OCS_WEBCONSOLE_DIR//\//\\/}"'\/ocsreports/g' ${REPORTS_CONF_FILE} - sed -i 's/PACKAGES_ALIAS/\/download/g' ${REPORTS_CONF_FILE} - sed -i 's/PATH_TO_PACKAGES_DIR/'"${OCS_VARLIB_DIR//\//\\/}"'download/g' ${REPORTS_CONF_FILE} - sed -i 's/SNMP_ALIAS/\/snmp/g' ${REPORTS_CONF_FILE} - sed -i 's/PATH_TO_SNMP_DIR/'"${OCS_VARLIB_DIR//\//\\/}"'snmp/g' ${REPORTS_CONF_FILE} + cp /tmp/conf/ocsinventory-reports.conf ${REPORTS_CONF_FILE} + perl -i -p -e 's/OCSREPORTS_ALIAS/\/ocsreports/g' ${REPORTS_CONF_FILE} + perl -i -p -e 's/PATH_TO_OCSREPORTS_DIR/$ENV{OCS_WEBCONSOLE_DIR}\/ocsreports/g' ${REPORTS_CONF_FILE} + perl -i -p -e 's/PACKAGES_ALIAS/\/download/g' ${REPORTS_CONF_FILE} + perl -i -p -e 's/PATH_TO_PACKAGES_DIR/$ENV{OCS_VARLIB_DIR}download/g' ${REPORTS_CONF_FILE} + perl -i -p -e 's/SNMP_ALIAS/\/snmp/g' ${REPORTS_CONF_FILE} + perl -i -p -e 's/PATH_TO_SNMP_DIR/${OCS_VARLIB_DIR}snmp/g' ${REPORTS_CONF_FILE} fi # Generate dbconfig.inc.php if [ ! -f ${DB_CONFIG_INC_FILE} ]; then - cp /tmp/conf/dbconfig.inc.php $OCS_WEBCONSOLE_DIR/ocsreports - sed -i 's/OCS_DB_NAME/'"$OCS_DB_NAME"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_READ_NAME/'"$OCS_DB_SERVER"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_WRITE_NAME/'"$OCS_DB_SERVER"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_DB_PORT/'"$OCS_DB_PORT"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_DB_USER/'"$OCS_DB_USER"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_DB_PASS/'"$OCS_DB_PASS"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_SSL_ENABLED/'"$OCS_SSL_ENABLED"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_SSL_WEB_MODE/'"$OCS_SSL_WEB_MODE"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_SSL_KEY/'"${OCS_SSL_KEY//\//\\/}"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_SSL_CERT/'"${OCS_SSL_CERT//\//\\/}"'/g' ${DB_CONFIG_INC_FILE} - sed -i 's/OCS_SSL_CA/'"${OCS_SSL_CA//\//\\/}"'/g' ${DB_CONFIG_INC_FILE} + cp /tmp/conf/dbconfig.inc.php $OCS_WEBCONSOLE_DIR/ocsreports/ + perl -i -p -e 's/OCS_DB_NAME/$ENV{OCS_DB_NAME}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_READ_NAME/$ENV{OCS_DB_SERVER}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_WRITE_NAME/$ENV{OCS_DB_SERVER}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_DB_PORT/$ENV{OCS_DB_PORT}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_DB_USER/$ENV{OCS_DB_USER}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_DB_PASS/$ENV{OCS_DB_PASS}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_SSL_ENABLED/$ENV{OCS_SSL_ENABLED}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_SSL_WEB_MODE/$ENV{OCS_SSL_WEB_MODE}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_SSL_KEY/$ENV{OCS_SSL_KEY}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_SSL_CERT/$ENV{OCS_SSL_CERT}/g' ${DB_CONFIG_INC_FILE} + perl -i -p -e 's/OCS_SSL_CA/$ENV{OCS_SSL_CA}/g' ${DB_CONFIG_INC_FILE} fi # Permissions @@ -49,9 +49,9 @@ chown -R $APACHE_RUN_USER: $OCS_VARLIB_DIR chown -R $APACHE_RUN_USER: $OCS_WEBCONSOLE_DIR # rm install.php -if [ -f $OCS_WEBCONSOLE_DIR/ocsreports/install.php ]; then - rm $OCS_WEBCONSOLE_DIR/ocsreports/install.php +if [ -f $OCS_WEBCONSOLE_DIR/ocsreports/install.php ] && [ $OCS_INSTALL_ENABLED -eq "0" ]; then + rm $OCS_WEBCONSOLE_DIR/ocsreports/install.php fi # Enable conf -a2enconf ocsinventory-reports +a2enconf ocsinventory-reports \ No newline at end of file diff --git a/2.11/docker-entrypoint.d/30-api-server.sh b/2.11/docker-entrypoint.d/30-api-server.sh index d7c407d..36a8d88 100644 --- a/2.11/docker-entrypoint.d/30-api-server.sh +++ b/2.11/docker-entrypoint.d/30-api-server.sh @@ -9,24 +9,24 @@ if [ ! -z "${OCS_DISABLE_API_MODE}" ] || [ ! -z "${OCS_DISABLE_COM_MODE}" ]; the exit 0 fi -API_CONF_FILE="/etc/apache2/conf-available/zz-ocsinventory-restapi.conf" -API_ROUTE=$(perl -e "print \"@INC[2]\"") -API_ROUTE_LOADER="${API_ROUTE}/Api/Ocsinventory/Restapi/Loader.pm" +export API_CONF_FILE="/etc/apache2/conf-available/zz-ocsinventory-restapi.conf" +export API_ROUTE=$(perl -e "print \"@INC[2]\"") +export API_ROUTE_LOADER="${API_ROUTE}/Api/Ocsinventory/Restapi/Loader.pm" cp -R /tmp/OCSNG_UNIX_SERVER-${OCS_VERSION}/Api/ ${API_ROUTE} # Configure zz-ocsinventory-restapi file if [ ! -f ${API_CONF_FILE} ]; then cp /tmp/conf/ocsinventory-restapi.conf ${API_CONF_FILE} - sed -i 's/DATABASE_SERVER/'"$OCS_DB_SERVER"'/g' ${API_CONF_FILE} - sed -i 's/DATABASE_PORT/'"$OCS_DB_PORT"'/g' ${API_CONF_FILE} - sed -i 's/DATABASE_NAME/'"$OCS_DB_NAME"'/g' ${API_CONF_FILE} - sed -i 's/DATABASE_USER/'"$OCS_DB_USER"'/g' ${API_CONF_FILE} - sed -i 's/DATABASE_PASSWD/'"$OCS_DB_PASS"'/g' ${API_CONF_FILE} - sed -i 's/OCS_SSL_ENABLED/'"$OCS_SSL_ENABLED"'/g' ${API_CONF_FILE} - sed -i 's/REST_API_PATH/'"${API_ROUTE//\//\\/}"'/g' ${API_CONF_FILE} - sed -i 's/REST_API_LOADER_PATH/'"${API_ROUTE_LOADER//\//\\/}"'/g' ${API_CONF_FILE} + perl -i -p -e 's/DATABASE_SERVER/$ENV{OCS_DB_SERVER}/g' ${API_CONF_FILE} + perl -i -p -e 's/DATABASE_PORT/$ENV{OCS_DB_PORT}/g' ${API_CONF_FILE} + perl -i -p -e 's/DATABASE_NAME/$ENV{OCS_DB_NAME}/g' ${API_CONF_FILE} + perl -i -p -e 's/DATABASE_USER/$ENV{OCS_DB_USER}/g' ${API_CONF_FILE} + perl -i -p -e 's/DATABASE_PASSWD/$ENV{OCS_DB_PASS}/g' ${API_CONF_FILE} + perl -i -p -e 's/OCS_SSL_ENABLED/$ENV{OCS_SSL_ENABLED}/g' ${API_CONF_FILE} + perl -i -p -e 's/REST_API_PATH/$ENV{API_ROUTE}/g' ${API_CONF_FILE} + perl -i -p -e 's/REST_API_LOADER_PATH/$ENV{API_ROUTE_LOADER}/g' ${API_CONF_FILE} fi # Enable conf -a2enconf zz-ocsinventory-restapi +a2enconf zz-ocsinventory-restapi \ No newline at end of file diff --git a/2.11/docker-entrypoint.d/40-crontab.sh b/2.11/docker-entrypoint.d/40-crontab.sh new file mode 100644 index 0000000..5ea0fcc --- /dev/null +++ b/2.11/docker-entrypoint.d/40-crontab.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +CRONTAB_FILE="/etc/cron/docker-crontab" + +if [ -f $CRONTAB_FILE ]; then + crontab $CRONTAB_FILE + cron -n +fi \ No newline at end of file