random app
This commit is contained in:
parent
94ed8943a9
commit
30ddcfdc1b
|
@ -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"]
|
|
@ -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'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -0,0 +1,74 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Random Number Generator with Countdown</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
background-color: #3f3f3f;
|
||||
}
|
||||
#randomNumber {
|
||||
font-size: 384px;
|
||||
padding: 40px;
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
border-radius: 10px;
|
||||
margin-bottom: 20px;
|
||||
width: 50%;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
#countdown {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
color: #999;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="randomNumber">Loading...</div>
|
||||
<div id="countdown">Next refresh in: loading...</div>
|
||||
|
||||
<script>
|
||||
const countdownElement = document.getElementById('countdown');
|
||||
const randomNumberElement = document.getElementById('randomNumber');
|
||||
|
||||
let countdownTime;
|
||||
|
||||
function generateRandomNumber() {
|
||||
const min = 1;
|
||||
const max = 12;
|
||||
const randomNumber = Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
randomNumberElement.textContent = randomNumber;
|
||||
}
|
||||
|
||||
function updateCountdown() {
|
||||
if (countdownTime <= 0) {
|
||||
generateRandomNumber();
|
||||
// Generate a new random countdown time between 10 and 30 seconds
|
||||
countdownTime = Math.floor(Math.random() * (30 - 10 + 1)) + 10;
|
||||
} else {
|
||||
countdownElement.textContent = `Next refresh in: ${countdownTime} seconds`;
|
||||
countdownTime--;
|
||||
}
|
||||
}
|
||||
|
||||
// Generate an initial random number and countdown time
|
||||
generateRandomNumber();
|
||||
countdownTime = Math.floor(Math.random() * (30 - 10 + 1)) + 10; // Initial random countdown
|
||||
|
||||
// Update countdown and refresh the number every second
|
||||
setInterval(updateCountdown, 1000);
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
Loading…
Reference in New Issue