initial commit
nclazz/static-webserver-docker/pipeline/head There was a failure building this commit Details

master
Niclas Thobaben 2022-02-08 10:41:30 +01:00
commit 6c9388a58a
4 changed files with 138 additions and 0 deletions

1
.gitignore vendored 100644
View File

@ -0,0 +1 @@
*.tmp

41
Dockerfile 100644
View File

@ -0,0 +1,41 @@
FROM alpine:3.15.0 AS builder
ARG THTTPD_VERSION=2.29
# Install all dependencies required for compiling thttpd
RUN apk add gcc musl-dev make
# Download thttpd sources
RUN wget http://www.acme.com/software/thttpd/thttpd-${THTTPD_VERSION}.tar.gz \
&& tar xzf thttpd-${THTTPD_VERSION}.tar.gz \
&& mv /thttpd-${THTTPD_VERSION} /thttpd
# Compile thttpd to a static binary which we can copy around
RUN cd /thttpd \
&& ./configure \
&& make CCOPT='-O2 -s -static' thttpd
# Create a non-root user to own the files and run our server
RUN adduser -D static
# Switch to the scratch image
FROM scratch
EXPOSE 80
# Copy over the user
COPY --from=builder /etc/passwd /etc/passwd
# Copy the thttpd static binary
COPY --from=builder /thttpd/thttpd /
# Use our non-root user
USER static
WORKDIR /home/static
# Copy the static website
# Use the .dockerignore file to control what ends up inside the image!
COPY . .
# Run thttpd
CMD ["/thttpd", "-D", "-h", "0.0.0.0", "-p", "80", "-d", "/home/static", "-u", "static", "-l", "-", "-M", "60"]

85
Jenkinsfile vendored 100644
View File

@ -0,0 +1,85 @@
pipeline {
agent { label 'docker' }
environment {
DOCKER_REGISTRY = "docker.nclazz.de"
DOCKER_IMAGE_NAME = "nclazz/static-webserver:latest"
}
stages {
stage('Build Docker Image') {
steps {
script {
docker.withRegistry("https://$DOCKER_REGISTRY", "jenkins_nexus") {
sh 'docker build --tag $DOCKER_IMAGE_NAME'
sh 'docker push $DOCKER_REGISTRY/$DOCKER_IMAGE_NAME'
sh 'docker rmi $(docker images --filter "dangling=true" -q --no-trunc)'
}
}
}
}
}
post {
always {
cleanWs()
}
failure {
slackSend(
channel: "notifications",
color: "danger",
message: "There is a *build failure* in ${env.JOB_NAME}.\nBuild: ${env.BUILD_URL} "
)
emailext(
recipientProviders: [developers()],
from: "jenkins@nclazz.de",
subject: "Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} failed",
body: """
There is a build failure in ${env.JOB_NAME}.
Build: ${env.BUILD_URL}
Logs: ${env.BUILD_URL}console
Changes: ${env.BUILD_URL}changes
--
"""
)
}
unstable {
slackSend(
channel: "notifications",
color: "warning",
message: "Some tests have failed in ${env.JOB_NAME}.\nBuild: ${env.BUILD_URL} "
)
emailext(
recipientProviders: [developers()],
from: "jenkins@nclazz.de",
subject: "Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} unstable",
body: """
Some tests have failed in ${env.JOB_NAME}.
Build: ${env.BUILD_URL}
Logs: ${env.BUILD_URL}console
Changes: ${env.BUILD_URL}changes
--
"""
)
}
fixed {
slackSend(
channel: "notifications",
color: "good",
message: "The build ${env.JOB_NAME} completed successfully and is back to normal.\nBuild: ${env.BUILD_URL} "
)
emailext(
recipientProviders: [developers()],
from: "jenkins@nclazz.de",
subject: "Jenkins job ${env.JOB_NAME}#${env.BUILD_NUMBER} fixed",
body: """
The build ${env.JOB_NAME} completed successfully and is back to normal.
Build: ${env.BUILD_URL}
Logs: ${env.BUILD_URL}console
Changes: ${env.BUILD_URL}changes
--
"""
)
}
}
}

11
README.md 100644
View File

@ -0,0 +1,11 @@
Static Webserver
================================
Static Webserver is a simple docker (base) image for serving static content.
Its based on [this](https://lipanski.com/posts/smallest-docker-image-static-website) blog article by Florin Lipan.
The resultung image is only `186 KB` + size of the static content.
Usage
--------------------------------
Use this image as base image and copy all static content to `/home/static/`.