# docker build . --tag=givingassistant/namaste:master # FROM givingassistant/base:latest FROM ubuntu:18.04 # install PHP and required packages, config RUN adduser --system --no-create-home --group app && \ adduser app www-data && \ export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get upgrade -y && \ apt-get install -y software-properties-common \ build-essential \ locales \ && \ localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \ add-apt-repository ppa:ondrej/php && \ apt-get update && \ apt-get install -y php7.2 \ php7.2-common \ php7.2-bcmath \ php7.2-cli \ php7.2-curl \ php7.2-dev \ php7.2-gd \ php7.2-json \ php7.2-mbstring \ php7.2-mysql \ php7.2-opcache \ php7.2-readline \ php7.2-xml \ php7.2-memcached \ # php7.3-mongodb \ php-pear \ autoconf \ g++ \ make \ libcurl4-openssl-dev \ pkg-config \ libsasl2-dev \ libpcre3-dev \ openssl \ libssl-dev \ openssh-server \ wget \ rsync \ git \ zip \ apache2 \ mongodb \ mariadb-client \ iputils-ping \ dnsutils \ vim && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* RUN echo "America/Los_Angeles" > /etc/timezone && \ ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime # Should we use configure tzdata instead commands instead of pushing into /etc/timezone. ENV LANG en_US.utf8 # This needs to be in a different run command for some reason # otherwise we are getting log directory does not exist error. # install mongodb RUN pecl install mongodb && \ pecl clear-cache # PHP configuration ADD ./deployment/phpconf.ini /etc/php/7.2/cli/conf.d/90-givva.ini # install app requirements RUN mkdir -p /home/app/lib ADD lib/composer.json /home/app/lib/composer.json RUN wget https://getcomposer.org/composer.phar && \ chmod +x composer.phar && \ mv composer.phar /usr/local/bin/composer && \ cd /home/app/lib && \ /usr/local/bin/composer update -vv --prefer-dist # add apache config ADD ./deployment/apache.conf /etc/apache2/sites-available/namaste.conf # TODO should we add ssl files like we do on givingassistant/web ? RUN a2ensite namaste && \ a2dissite 000-default && \ a2enmod ssl && \ a2enmod headers && \ a2enmod rewrite && \ a2enmod setenvif && \ a2enmod status # Add run script # ADD ./deployment/run_apache.sh /etc/service/httpd/run # ADD ./deployment/run_namaste.sh /etc/my_init.d/02_namaste_start.sh ADD ./deployment/run.sh /sbin/run.sh # pull in source to user's home ADD . /home/app RUN mkdir -p /home/app/logs && \ mkdir -p /home/app/pids && \ mkdir -p /home/app/scripts/mongo && \ chmod a+x /sbin/run.sh &&\ chown app /home/app -R && \ chgrp www-data /home/app -R && \ chmod g+rwx /home/app -R ; # Add ssh configuration ADD ./deployment/sshd/sshd_config /etc/ssh/sshd_config ADD ./deployment/namastessh/id_rsa.pub /root/.ssh/authorized_keys RUN passwd -d root WORKDIR /home/app CMD ["/sbin/run.sh"]