FROM httpd:alpine # These variables are inherited from the httpd:alpine image: # ENV HTTPD_PREFIX /usr/local/apache2 # WORKDIR "$HTTPD_PREFIX" RUN set -ex; \ # Install openssl if we need to generate a self-signed certificate. apk add --no-cache openssl; \ # Create empty default DocumentRoot. mkdir -p "/var/www/html"; \ # Create directories for Dav data and lock database. mkdir -p "/var/lib/dav/data"; \ touch "/var/lib/dav/DavLock"; \ chown -R www-data:www-data "/var/lib/dav"; \ \ # Configure port sed -i -e "s|Listen .*|Listen 8080|" "conf/httpd.conf"; \ # Configure file paths sed -i -e "s|PidFile .*|PidFile /tmp/apache.pid|" "conf/extra/httpd-mpm.conf"; \ # Enable DAV modules. for i in dav dav_fs; do \ sed -i -e "/^#LoadModule ${i}_module.*/s/^#//" "conf/httpd.conf"; \ done; \ \ # Make sure authentication modules are enabled. for i in authn_core authn_file authz_core authz_user auth_basic auth_digest; do \ sed -i -e "/^#LoadModule ${i}_module.*/s/^#//" "conf/httpd.conf"; \ done; \ \ # Make sure other modules are enabled. for i in alias headers mime setenvif; do \ sed -i -e "/^#LoadModule ${i}_module.*/s/^#//" "conf/httpd.conf"; \ done; \ \ # Run httpd as "www-data" (instead of "daemon"). #for i in User Group; do \ # sed -i -e "s|^$i .*|$i www-data|" "conf/httpd.conf"; \ #done; \ \ # Include enabled configs and sites. printf '%s\n' "Include conf/conf-enabled/*.conf" \ >> "conf/httpd.conf"; \ printf '%s\n' "Include conf/sites-enabled/*.conf" \ >> "conf/httpd.conf" COPY conf/ conf/ RUN set -ex; \ # Enable dav and default site. mkdir -p "conf/conf-enabled"; \ mkdir -p "conf/sites-enabled"; \ ln -s ../conf-available/dav.conf "conf/conf-enabled"; \ ln -s ../conf-available/pid.conf "conf/conf-enabled"; \ ln -s ../sites-available/default.conf "conf/sites-enabled" COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh EXPOSE 8080/tcp 4430/tcp ENTRYPOINT [ "docker-entrypoint.sh" ] CMD [ "httpd-foreground" ]