forked from HPR/hpr_generator
Add Container file and build script (button_hpr_container.sh) to repo. The
build script can also run new containers after building images. Build properties such as "${conternerBuildProperties[containerFile]}" must be assigned before building/running new containers. Build script is "work in progress". On branch dev Changes to be committed: new file: Containerfile new file: button_hpr_container.sh
This commit is contained in:
parent
a8b205ed2c
commit
cbe3dd4e0d
62
utils/Containerfile
Normal file
62
utils/Containerfile
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
FROM perl:5.40.1 As base
|
||||||
|
|
||||||
|
LABEL author="sgoti" \
|
||||||
|
email="lyunpaw@gmail.com" \
|
||||||
|
project="Hacker Public Radio" \
|
||||||
|
forge="https://repo.anhonesthost.net/HPR"
|
||||||
|
|
||||||
|
ARG unprivilegedUser="janitor"
|
||||||
|
|
||||||
|
RUN apt update && apt upgrade --yes;
|
||||||
|
|
||||||
|
RUN apt install --no-install-recommends sqlite3 git --yes \
|
||||||
|
&& rm --recursive --force /var/lib/apt/lists/*;
|
||||||
|
|
||||||
|
RUN mkdir --verbose --parent /opt/hpr /tmp/hpr;
|
||||||
|
|
||||||
|
RUN groupadd --system ${unprivilegedUser} \
|
||||||
|
&& useradd --system --no-log-init --gid ${unprivilegedUser} ${unprivilegedUser};
|
||||||
|
|
||||||
|
RUN chown --recursive ${unprivilegedUser}:${unprivilegedUser} /opt/hpr \
|
||||||
|
&& chown --recursive ${unprivilegedUser}:${unprivilegedUser} /tmp/hpr;
|
||||||
|
|
||||||
|
#Bill of particulars.
|
||||||
|
|
||||||
|
##Meta::CPAN (Comprehensive Perl Archive Network)
|
||||||
|
RUN cpanm Config::General \
|
||||||
|
DBD::SQLite \
|
||||||
|
DBI \
|
||||||
|
Data::Dumper \
|
||||||
|
Date::Calc \
|
||||||
|
Date::Parse \
|
||||||
|
DateTime \
|
||||||
|
DateTime::Duration \
|
||||||
|
DateTime::Format::Duration \
|
||||||
|
DateTime::TimeZone \
|
||||||
|
HTML::Entities \
|
||||||
|
JSON \
|
||||||
|
Template \
|
||||||
|
Template::Filters;
|
||||||
|
|
||||||
|
##Included perl core modules (standard library).
|
||||||
|
##Carp
|
||||||
|
##Cwd
|
||||||
|
##Getopt::Long
|
||||||
|
##Pod::Usage
|
||||||
|
##File::Copy
|
||||||
|
|
||||||
|
USER ${unprivilegedUser}
|
||||||
|
|
||||||
|
WORKDIR /opt/hpr
|
||||||
|
|
||||||
|
RUN git clone https://repo.anhonesthost.net/HPR/hpr-tools.git \
|
||||||
|
&& git clone https://repo.anhonesthost.net/HPR/hpr_hub.git \
|
||||||
|
&& git clone https://repo.anhonesthost.net/HPR/hpr_generator.git \
|
||||||
|
&& git clone https://repo.anhonesthost.net/HPR/hpr_documentation.git;
|
||||||
|
|
||||||
|
WORKDIR /opt/hpr/hpr-tools/Community_News/
|
||||||
|
RUN ln --symbolic /opt/hpr/hpr_generator/utils/mysql2sqlite /opt/hpr/hpr-tools/Community_News/mysql2sqlite;
|
||||||
|
RUN ./collect_HPR_database;
|
||||||
|
|
||||||
|
CMD bash;
|
||||||
|
|
136
utils/button_hpr_container.sh
Executable file
136
utils/button_hpr_container.sh
Executable file
@ -0,0 +1,136 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#License: GPL v3
|
||||||
|
#see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#Name: button_podman_make_shownotes.sh
|
||||||
|
#Purpose: build/run HPR Container.
|
||||||
|
#Version: beta 0.01
|
||||||
|
#Author: SGOTI (Some Guy On The Internet)
|
||||||
|
#Email: Lyunpaw@gmail.com
|
||||||
|
#Date: 2025-04-19
|
||||||
|
|
||||||
|
#declaration:
|
||||||
|
declare bindir="/usr/bin/"
|
||||||
|
declare podman="${bindir}podman"
|
||||||
|
declare echo="builtin echo -e"
|
||||||
|
declare unprivilegedUser="janitor"
|
||||||
|
declare date="${bindir}date"
|
||||||
|
declare flags
|
||||||
|
declare OPTIND
|
||||||
|
declare -A containerBulidProperties
|
||||||
|
|
||||||
|
declare currentMonth
|
||||||
|
declare nextMonth
|
||||||
|
declare currentYear
|
||||||
|
|
||||||
|
#start:
|
||||||
|
currentMonth=$(${date} +%m)
|
||||||
|
currentYear=$(${date} +%Y)
|
||||||
|
|
||||||
|
if [[ ${currentmonth} -gt 0 ]] && [[ ${currentmonth} -le 11 ]]; then
|
||||||
|
nextMonth="(($(${date} +%m)+01))" #Incomplete: Can return single-digit integer; must be a double-digit integer.
|
||||||
|
else
|
||||||
|
nextMonth="01"
|
||||||
|
fi
|
||||||
|
|
||||||
|
containerBulidProperties=(
|
||||||
|
"containerFile" "/path/to/Containerfile"
|
||||||
|
"hostMountDir01" "path/to/project/directory"
|
||||||
|
"hostMountDir02" "/tmp/"
|
||||||
|
"containerMountDir01" "/opt/hpr/"
|
||||||
|
"containerMountDir02" "/tmp/hpr/"
|
||||||
|
"containerImageTag" "testing:0.1"
|
||||||
|
"pullNewImage" "podman pull docker.io/library/perl"
|
||||||
|
"recordingDate" "$(${date} -d "${currentYear}/${currentMonth}/01")"
|
||||||
|
"recordingTimeStart" "15:00" #TZ: UTC
|
||||||
|
"recordingTimeEnd" "17:00" #TZ: UTC
|
||||||
|
)
|
||||||
|
|
||||||
|
function runHPRContainer () {
|
||||||
|
local makeEmail #Incomplete:
|
||||||
|
makeEmail="./make_email -month=${containerBulidProperties[recordingDate]} -start=15:00 -end=17:00 -out=/tmp/hpr/%semail.txt"
|
||||||
|
local makeShownotes #Incomplete:
|
||||||
|
makeShownotes="/opt/hpr/src/hpr-tools/Community_News/make_shownotes -from=${containerBulidProperties[recordingDate]} -full=/tmp/hpr/%sfull_shownotes.html -mail -comments"
|
||||||
|
|
||||||
|
${podman} run \
|
||||||
|
--mount type=bind,src=${containerBulidProperties[hostMountDir02]},dst=${containerBulidProperties[containerMountDir02]},rw=true \
|
||||||
|
--label="Project"="HPR" \
|
||||||
|
--label="Forge"="https://repo.anhonesthost.net/HPR/" \
|
||||||
|
--interactive \
|
||||||
|
--tty \
|
||||||
|
--rm=true \
|
||||||
|
--privileged=false \
|
||||||
|
--pull="never" \
|
||||||
|
--cgroups=enabled \
|
||||||
|
--cgroupns=private \
|
||||||
|
--uts=private \
|
||||||
|
--pid=private \
|
||||||
|
--memory="32m" \
|
||||||
|
--memory-reservation="16m" \
|
||||||
|
--hostname="hpr" \
|
||||||
|
--name="hpr_project" \
|
||||||
|
--user="${unprivilegedUser}" \
|
||||||
|
${containerBulidProperties[containerImageTag]} bash;
|
||||||
|
unset currentMonth
|
||||||
|
unset currentYear
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildNewContainerImage () {
|
||||||
|
local containerNameAndVersionNumber="hpr_image:5.40.1"
|
||||||
|
if [[ -f "${containerBulidProperties[containerFile]}" ]]; then
|
||||||
|
${echo} "Building new container image...\nThis may take several minutes.\
|
||||||
|
\nThis is a non interactive build process, so you can return when \
|
||||||
|
it's completed.";
|
||||||
|
${podman} build --file="${containerBulidProperties[containerFile]}" --tag="${containerBulidProperties[containerImageTag]}";
|
||||||
|
else
|
||||||
|
${echo} 'Dont forget to assign the ${containerBulidProperties[containerFile]} ;). The Containerfile is needed to build the container image.'
|
||||||
|
fi
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function help () {
|
||||||
|
${echo} "$0 [-hbpq]\n\t[-h] help\n\t[-b] build new container\n\t[-p] pull new perl image\n\t[-q] quit";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while getopts 'hbpq' flags; do
|
||||||
|
case "${flags}" in
|
||||||
|
h) help; exit 0;
|
||||||
|
;;
|
||||||
|
|
||||||
|
i) ${echo} "Work in progress... :D"; break;
|
||||||
|
;;
|
||||||
|
|
||||||
|
b) buildNewContainerImage;
|
||||||
|
;;
|
||||||
|
|
||||||
|
p) ${containerBulidProperties[pullNewImage]}; exit 0;
|
||||||
|
;;
|
||||||
|
|
||||||
|
e) ${echo} "Work in progress... :D"; break;
|
||||||
|
;;
|
||||||
|
|
||||||
|
s) ${echo} "Work in progress... :D"; break;
|
||||||
|
;;
|
||||||
|
|
||||||
|
q)
|
||||||
|
${echo} "Quitting script."; break;
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
${echo} "Good Heavens! Wrong input."; help; exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [[ -z ${1} ]]; then help; runHPRContainer; fi;
|
||||||
|
|
||||||
|
unset echo
|
||||||
|
unset flags
|
||||||
|
unset podman
|
||||||
|
unset OPTIND
|
||||||
|
unset containerBulidProperties
|
||||||
|
exit 0
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user