Sign inSign up

cquad/jeedom

By cquad

•Updated over 7 years ago

Image
3

5.5K

Dockerfile
FROM debian:jessie

MAINTAINER [email protected]

ENV JEEDOM_DB_HOST localhost
ENV JEEDOM_DB_PASSWORD jeedom
ENV SHELL_ROOT_PASSWORD jeedom

RUN echo "mysql-server mysql-server/root_password password ${JEEDOM_DB_PASSWORD}" | debconf-set-selections
RUN echo "mysql-server mysql-server/root_password_again password ${JEEDOM_DB_PASSWORD}" | debconf-set-selections

RUN apt-get update && apt-get install -y \
	adduser \
	build-essential \
	cron \
	curl \
	libarchive-dev \
	libav-tools \
	libjsoncpp-dev \
	libpcre3-dev \
	git \
	libssh2-php \
	libtinyxml-dev \
	libudev1 \
	libxml2 \
	locales \
	miniupnpc \
	mysql-client \
	mysql-common \
	mysql-server \
	mysql-server-core \
	net-tools \
	nginx-common \
	nginx-full \
	nodejs \
	npm \
	ntp \
	openssh-server \
	php5-cli \
	php5-common \
	php5-curl \
	php5-dev \
	php5-fpm \
	php5-json \
	php5-mysql \
	php-pear \
	python-serial \
	sudo \
	supervisor \
	systemd \	
	unzip \
	usb-modeswitch \
	wget

RUN dpkg-reconfigure locales && \
    locale-gen C.UTF-8 && \
    /usr/sbin/update-locale LANG=C.UTF-8

ENV LC_ALL C.UTF-8

#RUN pecl install oauth


RUN apt-get autoremove

# Configuration nginx
COPY nginx_default /etc/nginx/sites-available/default
RUN touch /etc/nginx/sites-available/jeedom_dynamic_rule && chmod 777 /etc/nginx/sites-available/jeedom_dynamic_rule

# Configuration nginx_ssl
RUN openssl genrsa -out jeedom.key 2048
RUN openssl req \
        -new \
        -subj "/C=FR/ST=France/L=Paris/O=jeedom/OU=JE/CN=jeedom" \
        -key jeedom.key \
        -out jeedom.csr && \
   openssl x509 -req -days 9999 -in jeedom.csr -signkey jeedom.key -out jeedom.crt

RUN mkdir /etc/nginx/certs && \
        cp jeedom.key /etc/nginx/certs && \
        cp jeedom.crt /etc/nginx/certs && \
        rm jeedom.key jeedom.crt

COPY nginx_default_ssl /etc/nginx/sites-enabled/default_ssl

# modification de la configuration PHP pour un temps d'exécution allongé et le traitement de fichiers lourds
RUN sed -i "s/max_execution_time = 30/max_execution_time = 300/g" /etc/php5/fpm/php.ini
RUN sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 1G/g" /etc/php5/fpm/php.ini
RUN sed -i "s/post_max_size = 8M/post_max_size = 1G/g" /etc/php5/fpm/php.ini

# installation nginx
RUN mkdir -p /usr/share/nginx/www

# téléchargement de l'archive
#RUN cd /usr/share/nginx/jeedom/ && wget --no-check-certificate -O jeedom.zip https://market.jeedom.fr/jeedom/stable/jeedom.zip
RUN cd /usr/share/nginx/www && git clone https://github.com/jeedom/core.git jeedom

# ajout au préalable d'un dossier tmp
RUN mkdir -p /usr/share/nginx/www/jeedom/tmp

# définition des droits utilisateur/groupes/autres de manière récursif
RUN chmod 755 -R /usr/share/nginx/www/jeedom

# délégation des droits pour l'utilisateur www-data de manière récursif
RUN chown -R www-data:www-data /usr/share/nginx/www/jeedom

# ajout de l'utilisateur www-data au group dialout (pour piloter la connexion 3G éventuelle)
RUN adduser www-data dialout

RUN echo "www-data ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

# on copie le fichier de configuration d'exemple 
RUN cp /usr/share/nginx/www/jeedom/core/config/common.config.sample.php /usr/share/nginx/www/jeedom/core/config/common.config.php

# on modifie le contenu avec les paramètres fixés lors de la configuration de l'utilisateur mysql dédié (cf. "Bases de données mysql")
RUN sed -i "s/#PASSWORD#/${JEEDOM_DB_PASSWORD}/g" /usr/share/nginx/www/jeedom/core/config/common.config.php

COPY docker-entrypoint.sh /entrypoint.sh

RUN chmod +x /entrypoint.sh


RUN sed -i "s/PermitRootLogin without-password/PermitRootLogin yes/g" /etc/ssh/sshd_config

#ADD nginx.conf /etc/nginx/sites-available/default
RUN echo "daemon off;" >> /etc/nginx/nginx.conf

RUN echo "root:${SHELL_ROOT_PASSWORD}" | chpasswd

RUN mkdir -p /var/run/sshd /var/log/supervisor

ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf

RUN echo "* * * * * su --shell=/bin/bash - www-data -c 'nice -n 19 /usr/bin/php /usr/share/nginx/www/jeedom/core/php/jeeCron.php' >> /dev/null" | crontab -

WORKDIR /usr/share/nginx/www/jeedom

EXPOSE 80 8070 8083 9001 443 22 10000 17100
ENTRYPOINT ["/entrypoint.sh"]
CMD ["/usr/bin/supervisord"]