openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

Dockerfile (5021B)


      1 FROM alpine:3.13
      2 
      3 LABEL maintainer="Jan Dankert"
      4 
      5 # Install packages
      6 RUN apk --update --no-cache add \
      7     apache2 apache2-http2 curl \
      8     php7 php7-apache2 php7-session php7-pdo php7-pdo_mysql php7-pdo_pgsql php7-json php7-ftp php7-iconv php7-openssl php7-mbstring php7-dom php7-xml
      9 
     10 ENV DB_TYPE="mysql"     \
     11     DB_HOST="localhost" \
     12     DB_NAME="cms"       \
     13     DB_USER="cms"       \
     14     DB_PASS=""          \
     15     CMS_MOTD=""         \
     16     CMS_NAME="OpenRat CMS (Docker)"      \
     17     CMS_OPERATOR=""                      \
     18     CMS_LOG_LEVEL="info"                 \
     19     CMS_PRODUCTION="true"                \
     20     CMS_TIMEZONE=""                      \
     21     CMS_LANGUAGE=""                      \
     22     DOCROOT="/var/www/localhost/cms"
     23 
     24 # Configuring apache webserver
     25 # - disable access log
     26 # - enable HTTP/2
     27 RUN sed -i '/CustomLog/s/^/#/g'                     /etc/apache2/httpd.conf && \
     28     # Enable apache modules
     29     sed -i '/LoadModule http2_module/s/^#//g'       /etc/apache2/httpd.conf && \
     30     sed -i '/LoadModule vhost_alias_module/s/^#//g' /etc/apache2/httpd.conf && \
     31     # Listening on ports
     32     sed -i 's/^Listen 80/Listen 8080\nListen 8081\nListen 8082/g'       /etc/apache2/httpd.conf && \
     33     chown apache /var/log/apache2 && \
     34     chown apache /run/apache2     && \
     35     mkdir $DOCROOT                && \
     36     mkdir -p /var/www/localhost/public     && \
     37     chown apache /var/www/localhost/public && \
     38     # Virtual host for CMS
     39     echo "<VirtualHost *:8080>"         >> /etc/apache2/httpd.conf && \
     40     echo "  DocumentRoot $DOCROOT"      >> /etc/apache2/httpd.conf && \
     41     echo "</VirtualHost>"               >> /etc/apache2/httpd.conf && \
     42     # Virtual host for generated pages
     43     echo "<VirtualHost *:8081>"         >> /etc/apache2/httpd.conf && \
     44     echo "  DocumentRoot /var/www/localhost/public"   >> /etc/apache2/httpd.conf && \
     45     echo "  ServerSignature Off"        >> /etc/apache2/httpd.conf && \
     46     echo "  php_value engine off"       >> /etc/apache2/httpd.conf && \
     47     echo "</VirtualHost>"               >> /etc/apache2/httpd.conf && \
     48     # Virtual host for multiple domains
     49     echo "<VirtualHost *:8082>"         >> /etc/apache2/httpd.conf && \
     50     echo "  UseCanonicalName    Off"    >> /etc/apache2/httpd.conf && \
     51     echo "  VirtualDocumentRoot /var/www/localhost/public/%0"  >> /etc/apache2/httpd.conf && \
     52     echo "  ServerSignature Off"        >> /etc/apache2/httpd.conf && \
     53     echo "  php_value engine off"       >> /etc/apache2/httpd.conf && \
     54     echo "</VirtualHost>"               >> /etc/apache2/httpd.conf && \
     55     # Directory configuration
     56     echo "<Directory \"/var/www/localhost/cms\"> " >> /etc/apache2/httpd.conf && \
     57     echo "  AllowOverride None"         >> /etc/apache2/httpd.conf && \
     58     echo "  Options None"               >> /etc/apache2/httpd.conf && \
     59     echo "  Require all granted"        >> /etc/apache2/httpd.conf && \
     60     echo "</Directory>"                 >> /etc/apache2/httpd.conf && \
     61     echo "<Directory \"/var/www/localhost/public\"> " >> /etc/apache2/httpd.conf && \
     62     echo "  Options Indexes"            >> /etc/apache2/httpd.conf && \
     63     echo "  AllowOverride None"         >> /etc/apache2/httpd.conf && \
     64     echo "  Require all granted"        >> /etc/apache2/httpd.conf && \
     65     echo "</Directory>"                 >> /etc/apache2/httpd.conf && \
     66     # Enable HTTP/2
     67     echo "Protocols h2 h2c http/1.1"    >> /etc/apache2/httpd.conf && \
     68     echo "H2ModernTLSOnly off"          >> /etc/apache2/httpd.conf
     69 
     70 # Copy the application to document root
     71 COPY . $DOCROOT
     72 
     73 # Place configuration in /etc, outside the docroot.
     74 RUN echo "include: /etc/openrat.yml" >  $DOCROOT/config/config.yml
     75 
     76 # Create configuration
     77 RUN echo -e '\
     78 # OpenRat CMS configuration for Docker\n\
     79 login:\n\
     80   motd: "${env:CMS_MOTD}"\n\
     81 \n\
     82 database-default:\n\
     83   default-id:  db\n\
     84 \n\
     85 \n\
     86 database:\n\
     87   db:\n\
     88     enabled    :  true\n\
     89     dsn        :  "${env:DB_TYPE}:host=${env:DB_HOST}; dbname=${env:DB_NAME}"\n\
     90     description:  "PDO"\n\
     91     name       :  "PRO"\n\
     92     user       :  ${env:DB_USER}\n\
     93     password   :  ${env:DB_PASS}\n\
     94     base64     :  true                 #  store binary as BASE64 (should be true for postgresql)\n\
     95     prefix     :  cms_\n\
     96     suffix     :  _or\n\
     97 \n\
     98 log:\n\
     99   file :  ""\n\
    100   level:  "${env:CMS_LOG_LEVEL}"\n\
    101   stdout: true\n\
    102 \n\
    103 production: ${env:CMS_PRODUCTION}\n\
    104 \n\
    105 publish:\n\
    106   filesystem:\n\
    107     directory: /var/www/localhost/public\n\
    108 \n\
    109 application:\n\
    110 	name: "${env:CMS_NAME}"\n\
    111 	operator: "${env:CMS_OPERATOR}"\n\
    112 ui:\n\
    113 	timezone: "${env:CMS_TIMEZONE}"\n\
    114 i18n:\n\
    115 	default: "${env:CMS_LANGUAGE}"\n\
    116 \n\
    117 ' >> /etc/openrat.yml
    118 
    119 # Logfiles are redirected to standard out
    120 RUN ln -sf /dev/stdout $DOCROOT/log/cms.log       && \
    121     ln -sf /dev/stderr /var/log/apache2/error.log
    122 
    123 EXPOSE 8080
    124 EXPOSE 8081
    125 EXPOSE 8082
    126 
    127 WORKDIR $DOCROOT
    128 
    129 USER apache
    130 
    131 HEALTHCHECK --interval=10s --timeout=5m --retries=1 CMD curl -f http://localhost:8080/status/?health || exit 1
    132 CMD /usr/sbin/httpd -D FOREGROUND