100 lines
3.9 KiB
Docker
100 lines
3.9 KiB
Docker
FROM debian:buster-slim
|
|
|
|
# Copyright (c) 2021 Battelle Energy Alliance, LLC. All rights reserved.
|
|
LABEL maintainer="malcolm.netsec@gmail.com"
|
|
LABEL org.opencontainers.image.authors='malcolm.netsec@gmail.com'
|
|
LABEL org.opencontainers.image.url='https://github.com/cisagov/Malcolm'
|
|
LABEL org.opencontainers.image.documentation='https://github.com/cisagov/Malcolm/blob/master/README.md'
|
|
LABEL org.opencontainers.image.source='https://github.com/cisagov/Malcolm'
|
|
LABEL org.opencontainers.image.vendor='Cybersecurity and Infrastructure Security Agency'
|
|
LABEL org.opencontainers.image.title='malcolmnetsec/htadmin'
|
|
LABEL org.opencontainers.image.description='Malcolm container providing htadmin for managing login accounts in an htpasswd file'
|
|
|
|
ARG DEFAULT_UID=33
|
|
ARG DEFAULT_GID=33
|
|
ENV DEFAULT_UID $DEFAULT_UID
|
|
ENV DEFAULT_GID $DEFAULT_GID
|
|
ENV PUSER "www-data"
|
|
ENV PGROUP "www-data"
|
|
# not dropping privileges globally so nginx can bind privileged ports internally.
|
|
# nginx and php-fpm will drop privileges to "www-data" user for worker processes
|
|
ENV PUSER_PRIV_DROP false
|
|
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
ENV TERM xterm
|
|
|
|
ARG PHP_VERSION=7.3
|
|
ARG MCRYPT_VERSION=1.0.2
|
|
ARG BOOTSTRAP_VERSION=3.3.6
|
|
|
|
ENV PHP_VERSION $PHP_VERSION
|
|
ENV MCRYPT_VERSION $MCRYPT_VERSION
|
|
ENV BOOTSTRAP_VERSION $BOOTSTRAP_VERSION
|
|
|
|
ENV HTADMIN_URL "https://codeload.github.com/mmguero-dev/htadmin/tar.gz/master"
|
|
|
|
RUN apt-get update && \
|
|
apt-get -y -q --allow-downgrades --allow-remove-essential --allow-change-held-packages --no-install-recommends install \
|
|
bcrypt \
|
|
ca-certificates \
|
|
curl \
|
|
libmcrypt-dev \
|
|
libmcrypt4 \
|
|
make \
|
|
mcrypt \
|
|
nginx-light \
|
|
php-dev \
|
|
php-pear \
|
|
php$PHP_VERSION-apcu \
|
|
php$PHP_VERSION-cli \
|
|
php$PHP_VERSION-curl \
|
|
php$PHP_VERSION-fpm \
|
|
php$PHP_VERSION-gd \
|
|
procps \
|
|
supervisor && \
|
|
( yes '' | pecl channel-update pecl.php.net ) && \
|
|
( yes '' | pecl install mcrypt-$MCRYPT_VERSION ) && \
|
|
ln -s -r /usr/lib/php/20??????/*.so /usr/lib/php/$PHP_VERSION/ && \
|
|
mkdir -p /run/php && \
|
|
cd /tmp && \
|
|
mkdir -p ./htadmin && \
|
|
curl -sSL "$HTADMIN_URL" | tar xzvf - -C ./htadmin --strip-components 1 && \
|
|
mv /tmp/htadmin/sites/html/htadmin /var/www/htadmin && \
|
|
cd /var/www/htadmin && \
|
|
( grep -rhoPi "(src|href)=['\"]https?://.+?['\"]" ./includes/* | sed "s/^[a-zA-Z]*=['\"]*//" | sed "s/['\"]$//" | xargs -r -l curl -s -S -L -J -O ) && \
|
|
sed -i "s@http[^'\"]*/@@gI" ./includes/* && \
|
|
mkdir fonts && cd fonts && \
|
|
curl -s -S -L -J -O "https://maxcdn.bootstrapcdn.com/bootstrap/$BOOTSTRAP_VERSION/fonts/glyphicons-halflings-regular.ttf" && \
|
|
curl -s -S -L -J -O "https://maxcdn.bootstrapcdn.com/bootstrap/$BOOTSTRAP_VERSION/fonts/glyphicons-halflings-regular.woff" && \
|
|
curl -s -S -L -J -O "https://maxcdn.bootstrapcdn.com/bootstrap/$BOOTSTRAP_VERSION/fonts/glyphicons-halflings-regular.woff2" && \
|
|
chown -R ${PUSER}:${PGROUP} /var/www && \
|
|
apt-get -y -q --allow-downgrades --allow-remove-essential --allow-change-held-packages --purge remove \
|
|
make libmcrypt-dev php-pear php-dev && \
|
|
apt-get autoremove -y -q && \
|
|
apt-get clean -y -q && \
|
|
rm -rf /var/lib/apt/lists/* /var/cache/* /tmp/* /var/tmp/* /var/www/html
|
|
|
|
ADD shared/bin/docker-uid-gid-setup.sh /usr/local/bin/
|
|
ADD docs/images/favicon/favicon.ico /var/www/htadmin/
|
|
ADD htadmin/supervisord.conf /supervisord.conf
|
|
ADD htadmin/htadmin.sh /usr/local/bin/
|
|
ADD htadmin/src /var/www/htadmin/
|
|
ADD htadmin/php/php.ini /etc/php/$PHP_VERSION/fpm/php.ini
|
|
ADD htadmin/nginx/sites-available/default /etc/nginx/sites-available/default
|
|
|
|
EXPOSE 80
|
|
|
|
ENTRYPOINT ["/usr/local/bin/docker-uid-gid-setup.sh"]
|
|
|
|
CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf", "-u", "root", "-n"]
|
|
|
|
|
|
# to be populated at build-time:
|
|
ARG BUILD_DATE
|
|
ARG MALCOLM_VERSION
|
|
ARG VCS_REVISION
|
|
|
|
LABEL org.opencontainers.image.created=$BUILD_DATE
|
|
LABEL org.opencontainers.image.version=$MALCOLM_VERSION
|
|
LABEL org.opencontainers.image.revision=$VCS_REVISION
|