commit
d82194a2b4
6 changed files with 190 additions and 0 deletions
@ -0,0 +1,22 @@ |
||||
FROM alpine:3.15.5 |
||||
|
||||
EXPOSE 8080 |
||||
|
||||
LABEL maintainer "me@jerryaldrichiii.com" |
||||
|
||||
RUN apk add --no-cache lighttpd=1.4.64-r0 |
||||
|
||||
RUN chown -R lighttpd /var/log/lighttpd |
||||
|
||||
RUN mkdir -p /etc/lighttpd/conf.d |
||||
|
||||
USER lighttpd |
||||
|
||||
COPY lighttpd.conf /etc/lighttpd/lighttpd.conf |
||||
COPY mime-types.conf /etc/lighttpd/mime-types.conf |
||||
|
||||
# Copying as lighttpd so that a user's entrypoint can remove/overwrite it |
||||
COPY --chown=lighttpd index.html /srv/html/index.html |
||||
|
||||
COPY entrypoint.sh /entrypoint.sh |
||||
ENTRYPOINT ["/entrypoint.sh"] |
@ -0,0 +1,19 @@ |
||||
# Lighttpd |
||||
|
||||
I couldn't find a non-root Lighttpd container, so I made one. |
||||
|
||||
It runs with UID=100 and GID=101 |
||||
|
||||
## Serving Static Websites |
||||
|
||||
Place your files into `/srv/html/` to serve them. |
||||
|
||||
## Customizing Startup |
||||
|
||||
Any scripts placed in `/docker-entrypoint.d/` will be executed alphabetically |
||||
prior to `entrypoint.sh` |
||||
|
||||
## Adding extra config |
||||
|
||||
Any .conf files included into `/etc/lighttpd/conf.d` will be appended to the |
||||
included `lighttpd.conf`. |
@ -0,0 +1,37 @@ |
||||
#!/bin/sh |
||||
|
||||
# CREDIT: https://github.com/nginxinc/docker-nginx/blob/f3d86e99ba2db5d9918ede7b094fcad7b9128cd8/mainline/alpine/docker-entrypoint.sh |
||||
|
||||
set -e |
||||
|
||||
if [ -n "${LIGHTTPD_QUIET_LOGS:-}" ]; then |
||||
exec 3>/dev/null |
||||
else |
||||
exec 3>&1 |
||||
fi |
||||
|
||||
if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -maxdepth 1 -type f -print -quit 2>/dev/null | read v; then |
||||
echo >&3 "$0: /docker-entrypoint.d/ is not empty, will run .sh files there prior to regular entrypoint" |
||||
|
||||
echo >&3 "$0: Looking for shell scripts in /docker-entrypoint.d/" |
||||
find "/docker-entrypoint.d/" -follow -type f -print | sort -V | while read -r f; do |
||||
case "$f" in |
||||
*.sh) |
||||
if [ -x "$f" ]; then |
||||
echo >&3 "$0: Launching $f"; |
||||
"$f" |
||||
else |
||||
# warn on shell scripts without exec bit |
||||
echo >&3 "$0: Ignoring $f, not executable"; |
||||
fi |
||||
;; |
||||
*) echo >&3 "$0: Ignoring $f";; |
||||
esac |
||||
done |
||||
|
||||
echo >&3 "$0: Configuration complete; ready for start up" |
||||
else |
||||
echo >&3 "$0: No files found in /docker-entrypoint.d/, proceeding to regular entrypoint" |
||||
fi |
||||
|
||||
lighttpd -D -f /etc/lighttpd/lighttpd.conf |
@ -0,0 +1,12 @@ |
||||
<!DOCTYPE HTML> |
||||
<html> |
||||
<head> |
||||
<title>Content Missing</title> |
||||
<meta name="Description" content="Someone didn't mount any content..."> |
||||
</head> |
||||
<body> |
||||
<p>This is just a placeholder page.</p> |
||||
<p>You should mount static content in /srv/html/</p> |
||||
<p>See README.md for more details</p> |
||||
<body> |
||||
</html> |
@ -0,0 +1,29 @@ |
||||
var.logdir = "/var/log/lighttpd" |
||||
var.statedir = "/var/lib/lighttpd" |
||||
|
||||
server.modules = ( |
||||
"mod_access", |
||||
"mod_accesslog", |
||||
"mod_setenv", |
||||
) |
||||
|
||||
accesslog.filename = "/dev/fd/2" |
||||
|
||||
include "mime-types.conf" |
||||
|
||||
server.document-root = "/srv/html/" |
||||
server.pid-file = "/tmp/lighttpd.pid" |
||||
|
||||
server.errorlog-use-syslog = "enable" |
||||
accesslog.use-syslog = "enable" |
||||
|
||||
server.indexfiles = ("index.html", "index.htm", "default.htm") |
||||
|
||||
server.port = 8080 |
||||
|
||||
url.access-deny = ("~", ".inc") |
||||
|
||||
server.network-backend = "writev" |
||||
server.tag = "If you're reading this you're up to no good..." |
||||
|
||||
include "/etc/lighttpd/conf.d/*.conf" |
@ -0,0 +1,71 @@ |
||||
mimetype.assign = ( |
||||
".svg" => "image/svg+xml", |
||||
".svgz" => "image/svg+xml", |
||||
".pdf" => "application/pdf", |
||||
".sig" => "application/pgp-signature", |
||||
".spl" => "application/futuresplash", |
||||
".class" => "application/octet-stream", |
||||
".ps" => "application/postscript", |
||||
".torrent" => "application/x-bittorrent", |
||||
".dvi" => "application/x-dvi", |
||||
".gz" => "application/x-gzip", |
||||
".pac" => "application/x-ns-proxy-autoconfig", |
||||
".swf" => "application/x-shockwave-flash", |
||||
".tar.gz" => "application/x-tgz", |
||||
".tgz" => "application/x-tgz", |
||||
".tar" => "application/x-tar", |
||||
".zip" => "application/zip", |
||||
".dmg" => "application/x-apple-diskimage", |
||||
".mp3" => "audio/mpeg", |
||||
".m3u" => "audio/x-mpegurl", |
||||
".wma" => "audio/x-ms-wma", |
||||
".wax" => "audio/x-ms-wax", |
||||
".ogg" => "application/ogg", |
||||
".wav" => "audio/x-wav", |
||||
".gif" => "image/gif", |
||||
".jpg" => "image/jpeg", |
||||
".jpeg" => "image/jpeg", |
||||
".png" => "image/png", |
||||
".xbm" => "image/x-xbitmap", |
||||
".xpm" => "image/x-xpixmap", |
||||
".xwd" => "image/x-xwindowdump", |
||||
".css" => "text/css", |
||||
".html" => "text/html", |
||||
".htm" => "text/html", |
||||
".js" => "text/javascript", |
||||
".asc" => "text/plain", |
||||
".c" => "text/plain", |
||||
".h" => "text/plain", |
||||
".cc" => "text/plain", |
||||
".cpp" => "text/plain", |
||||
".hh" => "text/plain", |
||||
".hpp" => "text/plain", |
||||
".conf" => "text/plain", |
||||
".log" => "text/plain", |
||||
".text" => "text/plain", |
||||
".txt" => "text/plain", |
||||
".diff" => "text/plain", |
||||
".patch" => "text/plain", |
||||
".ebuild" => "text/plain", |
||||
".eclass" => "text/plain", |
||||
".rtf" => "application/rtf", |
||||
".bmp" => "image/bmp", |
||||
".tif" => "image/tiff", |
||||
".tiff" => "image/tiff", |
||||
".ico" => "image/x-icon", |
||||
".dtd" => "text/xml", |
||||
".xml" => "text/xml", |
||||
".mpeg" => "video/mpeg", |
||||
".mpg" => "video/mpeg", |
||||
".mov" => "video/quicktime", |
||||
".qt" => "video/quicktime", |
||||
".avi" => "video/x-msvideo", |
||||
".asf" => "video/x-ms-asf", |
||||
".asx" => "video/x-ms-asf", |
||||
".wmv" => "video/x-ms-wmv", |
||||
".bz2" => "application/x-bzip", |
||||
".tbz" => "application/x-bzip-compressed-tar", |
||||
".wasm" => "application/wasm", |
||||
".tar.bz2" => "application/x-bzip-compressed-tar" |
||||
) |
||||
|
Loading…
Reference in new issue