# Rx3-Docker/PHP-Apache Docker Image #------------------------------------------------------------------------------- ARG IMG_FROM_URL="rx3-docker/server:latest" FROM ${IMG_FROM_URL} ARG IMG_NAME ARG IMG_NAME_FULL ARG IMG_VERSION ARG IMG_MAINTAINER ARG IMG_URL LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL} LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION} LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER} LABEL maintainer=${IMG_MAINTAINER} ARG APACHE_DOC_ROOT ARG APACHE_LOG_DIR ARG APACHE_PORT ARG HTTPD_CONF_FILE=/etc/httpd/conf/sites.d/default_vhost.d/30-rx3.conf #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ARG HTTPD='#!/bin/bash \n\ \n\ [[ "${APACHE_UID}" != "" ]] && usermod -u ${APACHE_UID} apache \n\ [[ "${APACHE_GID}" != "" ]] && groupmod -g ${APACHE_GID} apache \n\ \n\ chgrp apache /usr/bin/pwauth \n\ chmod u+s /usr/bin/pwauth \n\ \n\ chown -R apache:apache /var/log/httpd \n\ \n\ for file in /etc/httpd/conf/httpd.conf '${HTTPD_CONF_FILE}' \n\ do \n\ sed -i -e "s%/var/www/html%${APACHE_DOC_ROOT}%" ${file} \n\ done \n\ \n\ [[ "${PHP_MEMORY_LIMIT}" == "" ]] && PHP_MEMORY_LIMIT="512M" \n\ [[ "${PHP_UPLOAD_LIMIT}" == "" ]] && PHP_UPLOAD_LIMIT="32M" \n\ \n\ sed -i -e "s/memory_limit = 128M/memory_limit = ${PHP_MEMORY_LIMIT}/" /etc/php.d/01_ressourcelimits.ini \n\ sed -i -e "s/upload_max_filesize = 16M/upload_max_filesize = ${PHP_UPLOAD_LIMIT}/" /etc/php.d/01_fileuploads.ini \n\ sed -i -e "s/post_max_size = 8M/post_max_size = ${PHP_UPLOAD_LIMIT}/" /etc/php.d/01_datahandling.ini \n\ \n\ # HTTPD enabled by default \n\ if [[ "${APACHE_HTTPD_ENABLED}" == "FALSE" ]] \n\ then \n\ file_enable /etc/supervisord.d/httpd.ini FALSE \n\ else \n\ file_enable /etc/supervisord.d/httpd.ini TRUE \n\ fi' #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ARG HTTPD_INI='[program:httpd] \n\ command=/usr/sbin/httpd -DFOREGROUND' #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ARG HTTPD_CONF='#------------------------------------------------------------------------------- \n\ # _Proxy (Internal Macro) \n\ #------------------------------------------------------------------------------- \n\ # Warning: prefix_ext should be formated as: "", "aaa" or "aaa/bbb"... \n\ # prefix_int should be formated as: "", "aaa/" or "aaa/bbb/"... \n\ #------------------------------------------------------------------------------- \n\ \n\ \n\ \n\ RewriteCond "`$prefix_ext`" "!= ``" \n\ RewriteRule "^/$prefix_ext$" "/$prefix_ext/" [R,L] \n\ \n\ \n\ Require all granted \n\ \n\ ProxyPass http://$host:$port/$prefix_int flushpackets=on nocanon \n\ ProxyPassReverse http://$host:$port/$prefix_int \n\ \n\ # CookiePath Mapping \n\ \n\ \n\ ProxyPassReverseCookiePath /$prefix_int /$prefix_ext/ \n\ \n\ \n\ ProxyPassReverseCookiePath /$prefix_int / \n\ \n\ \n\ \n\ ProxyPassReverseCookiePath / /$prefix_ext/ \n\ \n\ \n\ # Header Normalization \n\ RequestHeader setifempty X-Forwarded-Proto expr=%{REQUEST_SCHEME} \n\ \n\ \n\ RequestHeader setifempty X-Forwarded-Prefix "/$prefix_ext" \n\ \n\ # Fix absolute Location headers (with domain) \n\ Header edit* Location ^(https?://[^/]+)/(?!$prefix_ext/)(.*)$ $1/$prefix_ext/$2 \n\ \n\ # Fix relative Location headers (starting with /) \n\ Header edit* Location ^/(?!$prefix_ext/)(.*)$ /$prefix_ext/$1 \n\ \n\ \n\ \n\ \n\ \n\ \n\ #------------------------------------------------------------------------------- \n\ # Proxy_Ext / Proxy_Int / Proxy_Ext_Int \n\ #------------------------------------------------------------------------------- \n\ # Warning: prefix_* should be formated as: "", "aaa" or "aaa/bbb"... \n\ #------------------------------------------------------------------------------- \n\ \n\ \n\ Use _Proxy $prefix_ext "" $host $port \n\ \n\ \n\ \n\ Use _Proxy "" $prefix_int/ $host $port \n\ \n\ \n\ \n\ Use _Proxy $prefix_ext $prefix_int/ $host $port \n\ \n\ \n\ \n\ \n\ RewriteEngine On \n\ \n\ # Reverse Proxy Configuration \n\ ProxyRequests Off \n\ ProxyPreserveHost On \n\ AllowEncodedSlashes NoDecode \n\ \n\ \n\ \n\ \n\ Options Includes Indexes FollowSymLinks \n\ AllowOverride All \n\ Require all granted \n\ ' #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ARG INFO_PHP='' #------------------------------------------------------------------------------------------------------------------------------------------------------------------------- RUN . /etc/profile.d/rx3.sh && isl_add ${IMG_URL} \ && urpmi.update -a \ && urpmi --force apache apache-mod_proxy apache-mod_proxy_html apache-mod_php php-cli php-pgsql php-mysqli php-pdo_pgsql php-pdo_mysql php-phpmailer pwauth \ && sed -i -e "s%#LoadModule macro_module modules/mod_macro.so%LoadModule macro_module modules/mod_macro.so%" /etc/httpd/conf/modules.d/00_base.conf \ && mv /etc/httpd/conf/sites.d/00_default_vhosts.conf /etc/httpd/conf/sites.d/00-default_vhost.conf \ && sed -i -e "s%ServerName localhost%ServerName localhost\n\n Include conf/sites.d/default_vhost.d/*.conf%" /etc/httpd/conf/sites.d/00-default_vhost.conf \ && mkdir /etc/httpd/conf/sites.d/default_vhost.d \ && rm -f /var/log/README \ && echo -e "${HTTPD}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/httpd \ && chmod a+x /etc/init.d/httpd \ && ln -s /etc/init.d/httpd /etc/rcD.d/S30httpd \ && echo -e "${HTTPD_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/httpd.ini \ && echo -e "${HTTPD_CONF}" | sed -e "s/\`/'/g" -e 's/ *$//' > ${HTTPD_CONF_FILE} \ && echo -e "${INFO_PHP}" | sed -e "s/\`/'/g" -e 's/ *$//' > /var/www/html/info.php VOLUME ${APACHE_DOC_ROOT} VOLUME ${APACHE_LOG_DIR} EXPOSE ${APACHE_PORT}