FROM ubuntu:xenial MAINTAINER Brady Wetherington RUN apt-get update && apt-get install -y \ apache2 \ apache2-bin \ libapache2-mod-php7.0 \ php7.0-curl \ php7.0-ldap \ php7.0-mysql \ php7.0-mcrypt \ php7.0-gd \ php7.0-xml \ php7.0-mbstring \ php7.0-zip \ php7.0-bcmath \ patch \ curl \ vim \ git \ cron \ mysql-client \ cron \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* RUN phpenmod mcrypt RUN phpenmod gd RUN phpenmod bcmath RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.0/apache2/php.ini RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.0/cli/php.ini RUN useradd -m --uid 1000 --gid 50 docker RUN echo export APACHE_RUN_USER=docker >> /etc/apache2/envvars RUN echo export APACHE_RUN_GROUP=staff >> /etc/apache2/envvars COPY docker/000-default.conf /etc/apache2/sites-enabled/000-default.conf #SSL RUN mkdir -p /var/lib/snipeit/ssl COPY docker/001-default-ssl.conf /etc/apache2/sites-enabled/001-default-ssl.conf #COPY docker/001-default-ssl.conf /etc/apache2/sites-available/001-default-ssl.conf RUN a2enmod ssl #RUN a2ensite 001-default-ssl.conf COPY . /var/www/html RUN a2enmod rewrite ############ INITIAL APPLICATION SETUP ##################### WORKDIR /var/www/html #Append to bootstrap file (less brittle than 'patch') # RUN sed -i 's/return $app;/$env="production";\nreturn $app;/' bootstrap/start.php #copy all configuration files # COPY docker/*.php /var/www/html/app/config/production/ COPY docker/docker.env /var/www/html/.env RUN chown -R docker /var/www/html RUN \ rm -r "/var/www/html/storage/private_uploads" && ln -fs "/var/lib/snipeit/data/private_uploads" "/var/www/html/storage/private_uploads" \ && rm -rf "/var/www/html/public/uploads" && ln -fs "/var/lib/snipeit/data/uploads" "/var/www/html/public/uploads" \ && rm -r "/var/www/html/storage/app/backups" && ln -fs "/var/lib/snipeit/dumps" "/var/www/html/storage/app/backups" \ && mkdir "/var/lib/snipeit/keys" && ln -fs "/var/lib/snipeit/keys/oauth-private.key" "/var/www/html/storage/oauth-private.key" \ && ln -fs "/var/lib/snipeit/keys/oauth-public.key" "/var/www/html/storage/oauth-public.key" \ && chown docker "/var/lib/snipeit/keys/" ############## DEPENDENCIES via COMPOSER ################### #global install of composer RUN cd /tmp;curl -sS https://getcomposer.org/installer | php;mv /tmp/composer.phar /usr/local/bin/composer # Get dependencies USER docker RUN cd /var/www/html;composer install && rm -rf /home/docker/.composer/cache USER root ############### APPLICATION INSTALL/INIT ################# #RUN php artisan app:install # too interactive! Try something else #COPY docker/app_install.exp /tmp/app_install.exp #RUN chmod +x /tmp/app_install.exp #RUN /tmp/app_install.exp ############### DATA VOLUME ################# VOLUME ["/var/lib/snipeit"] ##### START SERVER COPY docker/entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # Add Tini ENV TINI_VERSION v0.14.0 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini RUN chmod +x /tini ENTRYPOINT ["/tini", "--"] CMD ["/entrypoint.sh"] EXPOSE 80 EXPOSE 443