diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..bca95cf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +# Use a Python base image +FROM python:3.9-slim + +# Set the working directory in the container +WORKDIR /app + +# Copy the requirements file if you have one +#COPY requirements.txt requirements.txt + +# Install any necessary packages +#RUN pip install --no-cache-dir -r requirements.txt + +# Copy your HTML directory +COPY ./index.html ./index.html + +# Expose the port you want to serve on +EXPOSE 8000 + +# Start the Python server +CMD ["python", "-m", "http.server", "8000"] diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..599351b --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,69 @@ +pipeline { + agent { + label 'pi501.in.thelinuxpro.net' + } + + stages { + stage("verify tooling") { + steps { + sh ''' + docker version + docker info + docker compose version + ''' + } + } + + stage("Build Containers and push to registry") { + steps { + script { + def status = sh(returnStatus: true, script: 'docker images | grep random-number-web-server | grep $(grep image docker-compose.yml | awk -F\':\' \'{ print $4 }\')') + + if (status != 0) { + sh 'docker compose build --push' + } else { + echo "Primary Image version already exists, no need to rebuild." + } + } + } + } + + stage('Create contexts') { + steps { + sh 'docker context ls | grep pi503 || docker context create pi503 --docker "host=ssh://pi503.in.thelinuxpro.net"' + } + } + + stage('Stop container') { + steps { + script { + def status = sh(returnStatus: true, script: 'grep $(docker --context pi503 compose ps | tail -n1 | awk \'{ print $2 }\') docker-compose.yml') + + if (status != 0) { + sh 'docker --context pi503 compose down' + sh 'sleep 5' + } else { + echo 'skip' + } + } + } + } + + stage('Start container') { + steps { + script { + def status = sh(returnStatus: true, script: 'grep $(docker --context pi503 compose ps | tail -n1 | awk \'{ print $2 }\') docker-compose.yml') + + if (status != 0) { + sh 'docker --context pi503 compose up -d' + sh 'docker --context pi503 compose ps' + sh 'sleep 3' + sh 'docker --context pi503 compose logs' + } else { + echo 'skip' + } + } + } + } + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..24a7c95 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +--- +networks: + infra_dev_net: + external: true + +services: + random-number-web-server: + build: + dockerfile: Dockerfile + container_name: random-number-web-server + image: docker-registry1.in.thelinuxpro.net:5000/tlp/random-number-web-server:250102.0.1 + networks: + infra_dev_net: + ipv4_address: 10.99.23.100 + restart: always + volumes: + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro diff --git a/index.html b/index.html new file mode 100644 index 0000000..444335b --- /dev/null +++ b/index.html @@ -0,0 +1,74 @@ + + + + + + Random Number Generator with Countdown + + + + +
Loading...
+
Next refresh in: loading...
+ + + + + +