Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Addressing some issues #100

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 50 additions & 53 deletions 2.11/Dockerfile
Original file line number Diff line number Diff line change
@@ -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"]
5 changes: 5 additions & 0 deletions 2.11/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,18 @@ 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
OCS_DB_PASS: ocspass
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:
Expand Down
20 changes: 10 additions & 10 deletions 2.11/docker-entrypoint.d/10-com-server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -45,4 +45,4 @@ fi
chown -R $APACHE_RUN_USER: $OCS_LOG_DIR

# Enable conf
a2enconf z-ocsinventory-server
a2enconf z-ocsinventory-server
60 changes: 30 additions & 30 deletions 2.11/docker-entrypoint.d/20-web-console.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,54 +4,54 @@ 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
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
24 changes: 12 additions & 12 deletions 2.11/docker-entrypoint.d/30-api-server.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
8 changes: 8 additions & 0 deletions 2.11/docker-entrypoint.d/40-crontab.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

CRONTAB_FILE="/etc/cron/docker-crontab"

if [ -f $CRONTAB_FILE ]; then
crontab $CRONTAB_FILE
cron -n
fi