Stabilize Hyperling.com (#21)

* Make the backup puller a full-fledged script after all.

* Finish the main portion.

* Remove version tag to avoid log errors on Docker 26.0, Compose 2.25.0.

* Try moving to a smaller, faster, more stable image.

* Move Nextcloud to the stable tag.

* Add shortcut aliases.

* Rename container website to www.

* Do not install the latest of the PHP or Node programs if a version already exists in the container.

* We need git!!

* Try only git and the PHP interpretor.

* Remove comments.

* Install express at the image layer, not during runtime.

* Let the app install express after all.

* Remove warning about apt CLI.

* Try to cache the express download/install.

* Fix caching of Node packages.
This commit is contained in:
Hyperling 2024-04-03 20:21:38 -07:00 committed by GitHub
parent 1ef1903f6b
commit fc7a5dc57d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 93 additions and 58 deletions

View File

@ -5,8 +5,6 @@
# https://thekelleys.org.uk/dnsmasq/doc.html
#
version: '3'
services:
app:
container_name: dns-app

View File

@ -3,12 +3,18 @@
# Using Debian testing so that we use PHP >8. Otherwise the shebangs from
# the include files (#!/usr/bin/php) show up on the website.
FROM debian:testing
FROM node:lts-slim
# Install Dependencies
RUN apt update && apt install -y sudo php-fpm nodejs npm
# Cache System Dependencies
RUN apt-get update && apt-get install -y git php-cli
# Run Website
# Cache Node Dependencies
RUN mkdir -p /var/www/api
WORKDIR /var/www/api
RUN echo '{ "dependencies": { "express": "" } }' > package.json
RUN npm install
# Install + Run Website
CMD cd /var/www/api && \
rm -rfv pages main.js run.sh && \
git clone https://github.com/Hyperling/Website website && \

View File

@ -2,11 +2,9 @@
# Hyperling.com configuration.
# 2023-01-24 container needs 128M to get started fully then settles to 25M.
version: '2'
services:
app:
container_name: website-app
container_name: www-app
build:
context: ./
network: host

View File

@ -1,11 +1,9 @@
# 2022-10-29
# Hyperling.com configuration.
version: '2'
services:
app:
container_name: website-app
container_name: www-app
build:
context: ./
network: host

View File

@ -18,8 +18,6 @@
# 2024-01-23
# Experimenting with how small a Nextcloud installation can survive.
version: '3'
services:
## MariaDB ##
@ -74,7 +72,7 @@ services:
## Nextcloud ##
nc-app:
container_name: nc-app
image: nextcloud
image: nextcloud:stable
restart: always
ports:
- 8080:80

View File

@ -16,8 +16,6 @@
# to maintain and may allow the internal address to be based on container
# name instead of the docker hosts's IP.
version: '3'
services:
## MariaDB ##
@ -75,7 +73,7 @@ services:
## Nextcloud ##
nc-app:
container_name: nc-app
image: nextcloud
image: nextcloud:stable
restart: always
ports:
- 8080:80

View File

@ -35,8 +35,6 @@
# 2023-09-15: File created and tweaked based on 'https://dl.photoprism.app/docker/docker-compose.yml'.
##
version: '3.5'
services:
pp-app:
container_name: pp-app

View File

@ -5,8 +5,6 @@
# https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/
# https://pentacent.medium.com/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71
version: '3'
services:
app:

View File

@ -5,8 +5,6 @@
# https://www.docker.com/blog/how-to-use-the-official-nginx-docker-image/
# https://pentacent.medium.com/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71
version: '3'
services:
app:

View File

@ -1,34 +0,0 @@
#!/usr/bin/env bash
# 2024-01-29 Hyperling
# Example of how to pull the polled Backip.zip file. This would be placed on
# the machine holding the backups in the directory that it should land.
DIR="$(dirname -- "${BASH_SOURCE[0]}")"
PROG="$(basename -- "${BASH_SOURCE[0]}")"
echo "$DIR/$PROG"
## Variables ##
DATE="`date '+%Y%m%d'`"
NEWFILE="$DIR/Backup_${DATE}.zip"
LATEST="`ls $DIR/Backup_*.zip | sort -r | head -n 1`"
## Main ##
echo "`date` - Creating '$NEWFILE'."
scp -P 4022 user@example.com:/tmp/Backup.zip $NEWFILE.tmp
mv -v $NEWFILE.tmp $NEWFILE
## Validation ##
# TBD: Can make this fancier, such as doing a real comparison for size growth.
echo "`date` - New backup's size:"
du -h $NEWFILE
echo "`date` - Previous backup's size:"
du -h $LATEST
## Finish ##
exit 0

75
bin/pull_backup.sh Executable file
View File

@ -0,0 +1,75 @@
#!/usr/bin/env bash
# 2024-01-29 Hyperling
# Example of how to pull the polled Backip.zip file. This would be placed on
# the machine holding the backups in the directory that it should land.
DIR="$(dirname -- "${BASH_SOURCE[0]}")"
PROG="$(basename -- "${BASH_SOURCE[0]}")"
echo "$DIR/$PROG"
## Variables ##
DATE="`date '+%Y%m%d'`"
NEWFILE="$DIR/Backup_${DATE}.zip"
PREVIOUS="`ls $DIR/Backup_*.zip | sort -r | head -n 1`"
## Functions ##
function usage {
echo -e "Usage: $PROG -d DESTINATION [-u USER] [-p PORT] [-h]\n"
cat <<- EOF
Download the latest Backup.zip from a Hyperling/Docker type project. The
file is downloaded to the directory that this file exists in, so that it
can be conveniently kept with the backups themselves.
Parameters
-d : The server name or IP address running hhe Docker instance.
-u : Username to connect as. Default LOGNAME, currently '$LOGNAME'.
-p : Port to connect through. Defaults to 22.
-h : Display this usage text.
EOF
}
## Parameters ##
port=22
user="$LOGNAME"
while getopts ':d:u:p:h' opt; do
case "$opt" in
d) destination="$OPTARG" ;;
u) user="$OPTARG" ;;
p) port="$OPTARG" ;;
h) usage 0 ;;
*) echo "ERROR: Parameter '$OPTARG' not recognized." >&2
usage 1 ;;
esac
done
## Validations ##
if [[ -z $destination ]]; then
echo "ERROR: Destination was not provided." >&2
usage 2
fi
## Main ##
echo "`date` - Creating '$NEWFILE'."
scp -P $port "$user@[$destination]":/tmp/Backup.zip $NEWFILE.tmp
mv -v $NEWFILE.tmp $NEWFILE
## Validation ##
# TBD: Can make this fancier, such as doing a real comparison for size growth.
echo "`date` - New backup's size:"
du -h $NEWFILE
if [[ -n $PREVIOUS ]]; then
echo "`date` - Previous backup's size:"
du -h $PREVIOUS
fi
## Finish ##
exit 0

View File

@ -24,6 +24,10 @@ export DOCKER_HOME DOCKER_PATH PATH
alias manage="$DOCKER_HOME/bin/manage.sh"
alias Docker="cd $DOCKER_HOME"
alias Config="cd $DOCKER_HOME/Config"
alias Volumes="cd $DOCKER_HOME/Volumes"
## Validations ##
if [[ -e $DOCKER_HOME/$PROG ]]; then