FROM alpine:edge MAINTAINER adam@diginc.us RUN apk add --update \ dnsmasq \ nginx \ ca-certificates \ php5-fpm php5-json php5-openssl libxml2 \ bc bash curl perl sudo && \ apk add --update --repository http://dl-1.alpinelinux.org/alpine/edge/testing/ tini && \ rm -rf /var/cache/apk/* # Customized from submodules COPY ./alpine/gravity.sh /usr/local/bin/ COPY ./alpine/nginx.conf /etc/nginx/nginx.conf # Original upstream pihole code being used COPY ./pi-hole/adlists.default /etc/pihole/ COPY ./pi-hole/pihole /usr/local/bin/ COPY ./pi-hole/advanced/Scripts/* /usr/local/bin/ RUN mkdir -p /opt/ && ln -s /usr/local/bin /opt/pihole COPY ./pi-hole/advanced/dnsmasq.conf.original /etc/dnsmasq.conf COPY ./pi-hole/advanced/01-pihole.conf /etc/dnsmasq.d/ COPY ./pi-hole/advanced/index.html /var/www/html/pihole/index.html COPY ./pi-hole/advanced/pihole.sudo /etc/sudoers.d/pihole COPY ./AdminLTE /var/www/html/admin COPY ./AdminLTE_version.txt /etc/ COPY ./pi-hole_version.txt /etc/ # Things installer did and fix alpine+nginx differences ENV WEBLOGDIR /var/log/nginx ENV PHP_CONFIG '/etc/php5/php-fpm.conf' RUN mkdir -p /etc/pihole/ && \ mkdir -p /var/www/html/pihole && \ mkdir -p /var/www/html/admin/ && \ chown nginx:nginx /var/www/html && \ touch ${WEBLOGDIR}/access.log ${WEBLOGDIR}/error.log && \ chown -R nginx:nginx ${WEBLOGDIR} && \ sed -i 's|^user\s*=.*$|user = nginx|' $PHP_CONFIG && \ chmod 775 /var/www/html && \ touch /var/log/pihole.log && \ chmod 644 /var/log/pihole.log && \ chown dnsmasq:root /var/log/pihole.log && \ sed -i "s/@INT@/eth0/" /etc/dnsmasq.d/01-pihole.conf && \ sed -i 's|"cd /etc/.pihole/ && git describe --tags --abbrev=0"|"cat /etc/pi-hole_version.txt"|g' /var/www/html/admin/footer.php && \ sed -i 's|"cd /var/www/html/admin/ && git describe --tags --abbrev=0"|"cat /etc/AdminLTE_version.txt"|g' /var/www/html/admin/footer.php && \ sed -i 's|www-data|nginx|g' /etc/sudoers.d/pihole && \ /bin/true # placeholder # This chould be eliminated if all (upstream) files were +x in git RUN chmod +x /usr/local/bin/*.sh # Fix dnsmasq in docker RUN grep -q '^user=root' || echo 'user=root' >> /etc/dnsmasq.conf # php config start passes special ENVs into ENV PHP_ENV_CONFIG '/etc/php5/fpm.d/envs.conf' ENV PHP_ERROR_LOG '/var/log/nginx/error.log' COPY ./alpine/start.sh / EXPOSE 53 53/udp EXPOSE 80 ENTRYPOINT ["tini", "--"] CMD /start.sh