Dockerfile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. FROM cloudron/base:0.10.0
  2. MAINTAINER Johannes Zellner <johannes@cloudron.io>
  3. RUN mkdir -p /app/code /run/app/sessions
  4. WORKDIR /app/code
  5. RUN apt-get update && apt-get install -y php libapache2-mod-php crudini \
  6. php-redis \
  7. php-bcmath \
  8. php-bz2 \
  9. php-curl \
  10. php-date \
  11. php-dba \
  12. php-enchant \
  13. php-gd \
  14. php-geoip \
  15. php-gettext \
  16. php-imap \
  17. php-json \
  18. php-log \
  19. php-mbstring \
  20. php-mcrypt \
  21. php-mime-type \
  22. php-mysql \
  23. php-pdfparser \
  24. php-readline \
  25. php-soap \
  26. php-sql-formatter \
  27. php-sqlite3 \
  28. php-tcpdf \
  29. php-timer \
  30. php-twig \
  31. php-uuid \
  32. php-validate \
  33. php-xml \
  34. php-xml-parser \
  35. php-xml-svg \
  36. php-yac \
  37. php-zip \
  38. php-imagick \
  39. proftpd proftpd-mod-ldap \
  40. cron \
  41. git \
  42. && rm -rf /var/cache/apt /var/lib/apt/lists /etc/ssh_host_*
  43. # configure apache
  44. RUN rm /etc/apache2/sites-enabled/*
  45. RUN sed -e 's,^ErrorLog.*,ErrorLog "|/bin/cat",' -i /etc/apache2/apache2.conf
  46. RUN sed -e "s,MaxSpareServers[^:].*,MaxSpareServers 5," -i /etc/apache2/mods-available/mpm_prefork.conf
  47. RUN a2disconf other-vhosts-access-log
  48. RUN echo "Listen 80" > /etc/apache2/ports.conf
  49. RUN a2enmod rewrite authnz_ldap headers
  50. # configure mod_php
  51. RUN crudini --set /etc/php/7.0/apache2/php.ini PHP upload_max_filesize 64M && \
  52. crudini --set /etc/php/7.0/apache2/php.ini PHP post_max_size 64M && \
  53. crudini --set /etc/php/7.0/apache2/php.ini PHP memory_limit 128M && \
  54. crudini --set /etc/php/7.0/apache2/php.ini Session session.save_path /run/app/sessions && \
  55. crudini --set /etc/php/7.0/apache2/php.ini Session session.gc_probability 1 && \
  56. crudini --set /etc/php/7.0/apache2/php.ini Session session.gc_divisor 100
  57. RUN mv /etc/php/7.0/apache2/php.ini /etc/php/7.0/apache2/php.ini.orig && ln -sf /app/data/php.ini /etc/php/7.0/apache2/php.ini
  58. # configure site
  59. COPY apache2-app.conf /app/code/apache2-app.conf
  60. RUN ln -s /run/apache2/app.conf /etc/apache2/sites-enabled/app.conf
  61. # phpMyAdmin
  62. RUN mkdir -p /app/code/phpmyadmin && \
  63. curl -L https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4.7.0-english.tar.gz | tar zxvf - -C /app/code/phpmyadmin --strip-components=1
  64. COPY phpmyadmin-config.inc.php /app/code/phpmyadmin/config.inc.php
  65. # configure proftpd
  66. ADD proftpd.conf /app/code/proftpd.conf.template
  67. RUN rm -rf /var/log/proftpd && ln -s /run/proftpd /var/log/proftpd
  68. # configure cron
  69. RUN rm -rf /var/spool/cron && ln -s /run/cron /var/spool/cron
  70. # clear out the crontab
  71. RUN rm -f /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/* && truncate -s0 /etc/crontab
  72. # configure supervisor
  73. ADD supervisor/ /etc/supervisor/conf.d/
  74. RUN sed -e 's,^logfile=.*$,logfile=/run/supervisord.log,' -i /etc/supervisor/supervisord.conf
  75. # add code
  76. COPY start.sh /app/code/
  77. # forgotten in the base image
  78. RUN chmod +x /usr/local/bin/composer
  79. # copy code from github
  80. RUN git clone https://github.com/friendica/friendica.git /app/code/friendica
  81. # navigate to friendica dir
  82. WORKDIR /app/code/friendica
  83. # checkout specific version
  84. RUN git checkout 7997df877d709f5c7ca211449ad941b1be216a2d
  85. #install composer packages
  86. RUN /usr/local/bin/composer install --optimize-autoloader
  87. # copy config file
  88. COPY htconfig.php /app/code/friendica/
  89. # make cloudron exec sane
  90. WORKDIR /app/data
  91. CMD [ "/app/code/start.sh" ]