snipe-it/Dockerfile

144 lines
4.3 KiB
Docker
Raw Permalink Normal View History

FROM ubuntu:20.04
LABEL maintainer="Brady Wetherington <bwetherington@grokability.com>"
# No need to add `apt-get clean` here, reference:
# - https://github.com/snipe/snipe-it/pull/9201
# - https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#apt-get
RUN export DEBIAN_FRONTEND=noninteractive; \
export DEBCONF_NONINTERACTIVE_SEEN=true; \
echo 'tzdata tzdata/Areas select Etc' | debconf-set-selections; \
echo 'tzdata tzdata/Zones/Etc select UTC' | debconf-set-selections; \
apt-get update -qqy \
&& apt-get install -qqy --no-install-recommends \
apt-utils \
2017-06-01 20:53:01 -07:00
apache2 \
2016-03-25 01:18:05 -07:00
apache2-bin \
2021-09-13 15:24:30 -07:00
libapache2-mod-php7.4 \
php7.4-curl \
php7.4-ldap \
php7.4-mysql \
php7.4-gd \
php7.4-xml \
php7.4-mbstring \
php7.4-zip \
php7.4-bcmath \
php7.4-redis \
php-memcached \
2016-03-25 01:18:05 -07:00
patch \
curl \
wget \
2016-03-25 01:18:05 -07:00
vim \
2016-05-14 15:43:46 -07:00
git \
2018-06-20 23:28:35 -07:00
cron \
mysql-client \
supervisor \
cron \
gcc \
make \
autoconf \
libc-dev \
pkg-config \
libmcrypt-dev \
2021-09-13 15:24:30 -07:00
php7.4-dev \
ca-certificates \
unzip \
dnsutils \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
2016-03-25 01:18:05 -07:00
RUN curl -L -O https://github.com/pear/pearweb_phars/raw/master/go-pear.phar
RUN php go-pear.phar
2021-09-13 15:24:30 -07:00
RUN pecl install mcrypt-1.0.3
2021-09-13 15:24:30 -07:00
RUN bash -c "echo extension=/usr/lib/php/20190902/mcrypt.so > /etc/php/7.4/mods-available/mcrypt.ini"
2017-06-01 20:53:01 -07:00
RUN phpenmod mcrypt
RUN phpenmod gd
RUN phpenmod bcmath
2016-03-25 01:18:05 -07:00
2021-09-13 15:24:30 -07:00
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.4/apache2/php.ini
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.4/cli/php.ini
2016-03-25 01:18:05 -07:00
2017-06-01 20:53:01 -07:00
RUN useradd -m --uid 1000 --gid 50 docker
2016-03-25 01:18:05 -07:00
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
2016-05-14 15:43:46 -07:00
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
2016-03-25 01:18:05 -07:00
RUN a2enmod ssl
RUN a2ensite 001-default-ssl.conf
2016-03-25 01:18:05 -07:00
COPY . /var/www/html
2016-03-25 01:18:05 -07:00
RUN a2enmod rewrite
COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf
2016-03-25 01:18:05 -07:00
############ INITIAL APPLICATION SETUP #####################
WORKDIR /var/www/html
#Append to bootstrap file (less brittle than 'patch')
2016-05-14 15:43:46 -07:00
# RUN sed -i 's/return $app;/$env="production";\nreturn $app;/' bootstrap/start.php
2016-03-25 01:18:05 -07:00
#copy all configuration files
2016-05-14 15:43:46 -07:00
# COPY docker/*.php /var/www/html/app/config/production/
COPY docker/docker.env /var/www/html/.env
RUN chown -R docker /var/www/html
2016-03-25 01:18:05 -07:00
2016-05-14 15:43:46 -07:00
RUN \
2016-11-11 20:30:04 -08:00
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 -p "/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" \
&& ln -fs "/var/lib/snipeit/keys/ldap_client_tls.cert" "/var/www/html/storage/ldap_client_tls.cert" \
&& ln -fs "/var/lib/snipeit/keys/ldap_client_tls.key" "/var/www/html/storage/ldap_client_tls.key" \
&& chown docker "/var/lib/snipeit/keys/" \
&& chown -h docker "/var/www/html/storage/" \
&& chmod +x /var/www/html/artisan \
&& echo "Finished setting up application in /var/www/html"
2016-05-14 15:43:46 -07:00
2016-03-25 01:18:05 -07:00
############## DEPENDENCIES via COMPOSER ###################
#global install of composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
2016-03-25 01:18:05 -07:00
# Get dependencies
2017-06-01 20:53:01 -07:00
USER docker
RUN composer install --no-dev --working-dir=/var/www/html
2017-06-01 20:53:01 -07:00
USER root
2016-03-25 01:18:05 -07:00
############### 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
2016-05-14 15:43:46 -07:00
############### DATA VOLUME #################
2016-08-30 12:13:29 -07:00
VOLUME ["/var/lib/snipeit"]
2016-05-14 15:43:46 -07:00
2016-03-25 01:18:05 -07:00
##### START SERVER
COPY docker/startup.sh docker/supervisord.conf /
COPY docker/supervisor-exit-event-listener /usr/bin/supervisor-exit-event-listener
RUN chmod +x /startup.sh /usr/bin/supervisor-exit-event-listener
2016-03-25 01:18:05 -07:00
CMD ["/startup.sh"]
2016-03-25 01:18:05 -07:00
EXPOSE 80
EXPOSE 443