Compare commits
31 Commits
a5a80276ac
...
stage
| Author | SHA1 | Date | |
|---|---|---|---|
| bf0497c02a | |||
| 9079afd570 | |||
| 93e0971050 | |||
| c19b73e3f0 | |||
| 018c3c9ceb | |||
| 7e733dedcb | |||
| dac5c0de17 | |||
| 3ae7a6f8f9 | |||
| 567f1de450 | |||
| 3ca8b036ad | |||
| 3897d6f3c3 | |||
| fdff4f0d27 | |||
| 7b9bbcbc26 | |||
| cbaf052ea2 | |||
| c4c3cb6434 | |||
| e0f846164e | |||
| 9314bb8bb4 | |||
| b9d9771523 | |||
| d2aa3c195b | |||
| dd60d5a721 | |||
| c04eb08f78 | |||
| 418983c490 | |||
| 95060838e2 | |||
| 6973640b4e | |||
| a49d0129e7 | |||
| 394acfa06d | |||
| 04089744e6 | |||
| 75711c6c20 | |||
| c4032b5b94 | |||
| d7820ed373 | |||
| d9f8318e66 |
10
.gitignore
vendored
10
.gitignore
vendored
@@ -25,6 +25,8 @@ Config/DNS/config/*
|
||||
|
||||
# Ignore anything in disabled folders.
|
||||
disabled
|
||||
*.disabled
|
||||
disabled.*
|
||||
|
||||
# Ignore any .env files which are not explicitly committed to the project.
|
||||
*.env
|
||||
@@ -35,10 +37,16 @@ docker-compose.yml
|
||||
# 2024-01-24 Hide static files for Hyperling.com.
|
||||
Config/Hyperling.com/files/*
|
||||
|
||||
# Ignore things like "Config/Hyperling.com-Stage/""
|
||||
# Ignore things like "Config/Hyperling.com-Stage/"
|
||||
*-Stage
|
||||
Stage-*
|
||||
|
||||
# Ignore copies of the Hugo configuration, such as "Config/Hugo-MyWebsite".
|
||||
Hugo-*
|
||||
*-Hugo
|
||||
|
||||
# Ignore Prod and Dev copies as well.
|
||||
*-Prod
|
||||
Prod-*
|
||||
*-Dev
|
||||
Dev-*
|
||||
|
||||
@@ -17,12 +17,17 @@ DEV="$4"
|
||||
typeset -u DEV
|
||||
echo "DEV='$DEV'"
|
||||
|
||||
SITE="/var/www/hugo/site"
|
||||
|
||||
echo "*** Creating Git Repo ***"
|
||||
sudo -u www-data git clone --recurse-submodules $BRANCH $REPO /var/www/hugo/site
|
||||
if [[ -d $SITE ]]; then
|
||||
rm -rfv $SITE
|
||||
fi
|
||||
sudo -u www-data git clone --recurse-submodules $BRANCH $REPO $SITE
|
||||
status="$?"
|
||||
|
||||
echo "*** Validating Git Repo ***"
|
||||
if [[ $status != 0 || ! -d /var/www/hugo/site/.git ]]; then
|
||||
if [[ $status != 0 || ! -d $SITE/.git ]]; then
|
||||
echo "ERROR: Hugo project may not have cloned correctly. status='$status'"
|
||||
echo "Aborting."
|
||||
exit 1
|
||||
@@ -62,7 +67,7 @@ if [[ "$DEV" == "Y"* || "$DEV" == "T"* ]]; then
|
||||
http_code="`curl -sS http://localhost:1380 -o /dev/null -w "%{http_code}"`"
|
||||
if [[ $http_code != 200 ]]; then
|
||||
echo "* Dev server not detected, starting..."
|
||||
cd /var/www/hugo/site
|
||||
cd $SITE
|
||||
killall hugo 2>/dev/null
|
||||
sudo -u www-data hugo server -D --noBuildLock --bind 0.0.0.0 -p 1380 &
|
||||
fi
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
FROM node:lts-slim
|
||||
|
||||
# Cache System Dependencies
|
||||
RUN apt-get update && apt-get install -y git php-cli sudo curl
|
||||
RUN apt-get update && apt-get install -y git php-cli sudo curl procps
|
||||
|
||||
# Cache Node Dependencies
|
||||
RUN mkdir -p /var/www/api
|
||||
@@ -16,10 +16,18 @@ RUN npm install
|
||||
|
||||
# Install + Run Website
|
||||
CMD cd /var/www/api && \
|
||||
rm -rfv pages main.js run.sh && \
|
||||
git clone https://git.hyperling.com/me/nodejs-website website && \
|
||||
rm -rfv website/files && \
|
||||
mv -v website/* ./ && \
|
||||
echo "Dockerfile: Ensure symlink is properly deleted if it exists..." && \
|
||||
ls -l website/files; rm -v website/files; sleep 0 && \
|
||||
echo "Dockerfile: Clone the website's Git repo..." && \
|
||||
rm -rfv website && \
|
||||
echo "Starting Website's Run Script" && \
|
||||
git clone https://git.hyperling.com/me/nodejs-website $BRANCH website && \
|
||||
echo "Dockerfile: Remove dummy files and replace with symlink..." && \
|
||||
rm -rfv website/files && \
|
||||
cd website && \
|
||||
echo -n "Dockerfile: Using branch " && \
|
||||
git branch && \
|
||||
ln -sv ../files ./files && \
|
||||
echo "Dockerfile: Allow files under files/ to be ignored by Git..." && \
|
||||
find ./files -exec git update-index --assume-unchanged {} \; && \
|
||||
echo "Dockerfile: Start website!" && \
|
||||
./run.sh
|
||||
|
||||
@@ -10,11 +10,15 @@ services:
|
||||
restart: always
|
||||
ports:
|
||||
- 8317:8080
|
||||
environment:
|
||||
- BRANCH=$BRANCH
|
||||
- CPU=$CPU
|
||||
- MEM=$MEM
|
||||
volumes:
|
||||
- ./files:/var/www/api/files
|
||||
deploy:
|
||||
mode: global
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.25'
|
||||
memory: 256M
|
||||
cpus: $CPU
|
||||
memory: $MEM
|
||||
@@ -1,21 +0,0 @@
|
||||
# 2022-10-29
|
||||
# Hyperling.com configuration.
|
||||
# 2023-01-24 container needs 128M to get started fully then settles to 25M.
|
||||
|
||||
services:
|
||||
app:
|
||||
container_name: www-app
|
||||
build:
|
||||
context: ./
|
||||
network: host
|
||||
restart: always
|
||||
ports:
|
||||
- 8317:8080
|
||||
volumes:
|
||||
- ./files:/var/www/api/files
|
||||
deploy:
|
||||
mode: global
|
||||
resources:
|
||||
limits:
|
||||
cpus: '0.10'
|
||||
memory: 128M
|
||||
@@ -7,3 +7,18 @@
|
||||
# Subsequent builds consistently take less than 2 seconds.
|
||||
# Testing was done on the micro server, not a workstation.
|
||||
COMPOSE_BAKE=true
|
||||
|
||||
## Branch ##
|
||||
# Allow choosing the branch. By leaving it blank, the main branch will be used.
|
||||
# Should be in the full "--branch my-branch" syntax.
|
||||
BRANCH=
|
||||
#BRANCH="--branch dev"
|
||||
|
||||
## Performance ##
|
||||
# Standard Server
|
||||
CPU=0.25
|
||||
MEM=0.25G
|
||||
# Micro Server
|
||||
# 2023-01-24 container needs 128M to get started fully then settles to 25M.
|
||||
#CPU=0.10
|
||||
#MEM=128M
|
||||
@@ -47,3 +47,7 @@ MODELS_DIR=../../Volumes/LibreTranslate/models
|
||||
## them from backup type locations such as Volumes/LibreTranslate/ and /var/.
|
||||
## Please see the README for the CRON command related to this setting.
|
||||
# MODELS_DIR=/tmp/LibreTranslate/models
|
||||
|
||||
## Can also place them under /opt/ which may be recommended by FHS standards.
|
||||
## This keeps them from taking up precious RAM / swap if using tmpfs or similar.
|
||||
# MODELS_DIR=/opt/LibreTranslate/models
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
# Construction Area
|
||||
|
||||
This configuration is still a work in progress. :)
|
||||
|
||||
# Provision Test Images
|
||||
|
||||
Create containers of popular Linux distributions in order to test Ansible.
|
||||
|
||||
@@ -20,5 +20,7 @@ EXTRA_UBUNTU=""
|
||||
|
||||
## Script
|
||||
REPO=https://git.hyperling.com/me/env-ansible
|
||||
BRANCH=dev
|
||||
#BRANCH=dev
|
||||
BRANCH=stage
|
||||
#BRANCH=prod
|
||||
EXEC="./setup.sh -l"
|
||||
|
||||
3
Config/WordpressExample/README.md
Normal file
3
Config/WordpressExample/README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Construction Area
|
||||
|
||||
This configuration is still a work in progress. :)
|
||||
80
Config/WordpressExample/docker-compose.main.yml
Normal file
80
Config/WordpressExample/docker-compose.main.yml
Normal file
@@ -0,0 +1,80 @@
|
||||
# 2025-10-17 Hyperling
|
||||
# Copied and modified from the example here:
|
||||
# https://hub.docker.com/_/wordpress
|
||||
# This file should be copied to `docker-compose.yml`.
|
||||
# Most configration changes can be done in the env file rather than here.
|
||||
|
||||
## TBDs ##
|
||||
# - Move env variables to env.example
|
||||
# - Look through other environment variables which may be useful.
|
||||
# - Add CPU and MEM section
|
||||
# - Change ports
|
||||
|
||||
# TBD locate these at ../../Volumes and create `prep.sh` script.
|
||||
#volumes:
|
||||
# wordpress:
|
||||
# db:
|
||||
|
||||
services:
|
||||
|
||||
wp-db:
|
||||
container_name: wp-db
|
||||
image: mariadb:lts
|
||||
restart: always
|
||||
volumes:
|
||||
- ../../Volumes/WordPress/mariadb:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||
start_period: 5s
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
environment:
|
||||
# https://mariadb.com/docs/server/server-management/automated-mariadb-deployment-and-administration/docker-and-mariadb/mariadb-server-docker-official-image-environment-variables
|
||||
MARIADB_DATABASE: $MARIADB_DATABASE
|
||||
MARIADB_USER: $MARIADB_USER
|
||||
MARIADB_PASSWORD: MARIADB_PASSWORD
|
||||
MARIADB_ROOT_PASSWORD: $MARIADB_ROOT_PASSWORD
|
||||
MARIADB_AUTO_UPGRADE: $MARIADB_AUTO_UPGRADE
|
||||
WP_CPU_DB: $WP_CPU_DB
|
||||
WP_MEM_DB: $WP_MEM_DB
|
||||
deploy:
|
||||
mode: global
|
||||
resources:
|
||||
limits:
|
||||
cpus: $WP_CPU_DB
|
||||
memory: $WP_MEM_DB
|
||||
|
||||
wp-app:
|
||||
container_name: wp-app
|
||||
image: wordpress:latest
|
||||
restart: always
|
||||
ports:
|
||||
- 8080:80
|
||||
depends_on:
|
||||
wp-db:
|
||||
condition: service_healthy
|
||||
links:
|
||||
- wp-db
|
||||
volumes:
|
||||
- ../../Volumes/WordPress/wordpress:/var/www/html
|
||||
environment:
|
||||
WORDPRESS_ADMIN_USERNAME: $WORDPRESS_ADMIN_USERNAME
|
||||
WORDPRESS_ADMIN_PASSWORD: $WORDPRESS_ADMIN_PASSWORD
|
||||
WORDPRESS_DB_HOST: wp-db
|
||||
WORDPRESS_DB_NAME: $MARIADB_DATABASE
|
||||
# TBD/TODO: Does not work, but recommended. :(
|
||||
#WORDPRESS_DB_USER: $MARIADB_USER
|
||||
#WORDPRESS_DB_PASSWORD: $MARIADB_PASSWORD
|
||||
# Works, but not recommended. Lol.
|
||||
WORDPRESS_DB_USER: root
|
||||
WORDPRESS_DB_PASSWORD: $MARIADB_ROOT_PASSWORD
|
||||
WORDPRESS_DEBUG: $WORDPRESS_DEBUG
|
||||
WP_CPU: $WP_CPU
|
||||
WP_MEM: $WP_MEM
|
||||
deploy:
|
||||
mode: global
|
||||
resources:
|
||||
limits:
|
||||
cpus: $WP_CPU
|
||||
memory: $WP_MEM
|
||||
63
Config/WordpressExample/env.main
Normal file
63
Config/WordpressExample/env.main
Normal file
@@ -0,0 +1,63 @@
|
||||
# This file should be copied to `.env` and have its values changes as needed.
|
||||
|
||||
## Docker ##
|
||||
|
||||
COMPOSE_BAKE=true
|
||||
|
||||
## End Docker ##
|
||||
|
||||
|
||||
## WordPress ##
|
||||
|
||||
# TBD/TODO: These do not actually seem to work.
|
||||
WORDPRESS_ADMIN_USERNAME='wp_user'
|
||||
WORDPRESS_ADMIN_PASSWORD='wordpress_password'
|
||||
|
||||
# Uncomment this to get debug output in the log.
|
||||
WORDPRESS_DEBUG=1
|
||||
|
||||
## End WordPress ##
|
||||
|
||||
|
||||
## Database ##
|
||||
|
||||
MARIADB_DATABASE='wordpress'
|
||||
|
||||
MARIADB_USER='db_user'
|
||||
MARIADB_PASSWORD='database_password'
|
||||
|
||||
MARIADB_ROOT_PASSWORD='db_root_password'
|
||||
|
||||
# Comment this if you do not want MariaDB to run upgrade scripts on new versions.
|
||||
MARIADB_AUTO_UPGRADE=1
|
||||
|
||||
## End Database ##
|
||||
|
||||
|
||||
## Performance ##
|
||||
|
||||
# Standard Minimum
|
||||
#WP_CPU=1.00
|
||||
#WP_MEM=2.00G
|
||||
#WP_CPU_DB=1.00
|
||||
#WP_MEM_DB=1.00G
|
||||
|
||||
# Standard Recommended
|
||||
#WP_CPU=1.00
|
||||
#WP_MEM=4.00G
|
||||
#WP_CPU_DB=1.00
|
||||
#WP_MEM_DB=0.50G
|
||||
|
||||
# Tested Minimum
|
||||
#WP_CPU=0.35
|
||||
#WP_MEM=0.35G
|
||||
#WP_CPU_DB=0.15
|
||||
#WP_MEM_DB=0.15G
|
||||
|
||||
# Tested Recommended
|
||||
WP_CPU=0.50
|
||||
WP_MEM=0.50G
|
||||
WP_CPU_DB=0.25
|
||||
WP_MEM_DB=0.25G
|
||||
|
||||
## End Performance ##
|
||||
@@ -12,23 +12,63 @@ source $DIR/../source.env
|
||||
TAG="Docker"
|
||||
DATE="`date "+%Y%m%d-%H%M%S"`"
|
||||
BACKUP_DIR="/srv/backup"
|
||||
BASENAME="$BACKUP_DIR/Backup"
|
||||
file="$BASENAME.$DATE.$HOSTNAME.$TAG.zip"
|
||||
BASENAME="Backup"
|
||||
file="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip"
|
||||
time="`which time`"
|
||||
|
||||
## Functions ##
|
||||
|
||||
function usage {
|
||||
cat <<- EOF
|
||||
Backup script for Hyperling's self-managed Docker setup.
|
||||
|
||||
Usage: $PROG [-u] [-d] [-h]
|
||||
-u : Bring all containers up after the backup has finished.
|
||||
-d : Bring all containers down before taking the backup.
|
||||
-h : Display this help text.
|
||||
|
||||
Example:
|
||||
$PROG -ud
|
||||
EOF
|
||||
|
||||
exit $1
|
||||
}
|
||||
|
||||
## Parameters ##
|
||||
|
||||
up=FALSE
|
||||
down=FALSE
|
||||
|
||||
while getopts ':udh' opt; do
|
||||
case "$opt" in
|
||||
u) up=TRUE ;;
|
||||
d) down=TRUE ;;
|
||||
h) usage 0 ;;
|
||||
*) echo "ERROR: Option $OPTARG not recognized." >&2
|
||||
usage 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
## Main ##
|
||||
|
||||
# Ensure backup directory exists with correct permissions.
|
||||
mkdir -pv $BACKUP_DIR
|
||||
chmod -Rv 755 $BACKUP_DIR
|
||||
chown -Rv root:root $BACKUP_DIR
|
||||
mkdir -pv "$BACKUP_DIR"
|
||||
mkdir -pv "$BACKUP_DIR/TRASH"
|
||||
chmod -Rv 775 "$BACKUP_DIR"
|
||||
chown -Rv root:root "$BACKUP_DIR"
|
||||
|
||||
# Remove the last backup.
|
||||
echo "`date` - Removing existing files."
|
||||
rm -fv "$BASENAME"*"$TAG"*
|
||||
cd "$BACKUP_DIR"
|
||||
mv -v "$BASENAME"*"$TAG"* TRASH/
|
||||
rm -v TRASH/*
|
||||
|
||||
echo -e "\n`date` - Take down services for a cold backup."
|
||||
manage.sh -d
|
||||
if [[ "$down" == "TRUE" ]]; then
|
||||
echo -e "\n`date` - Take down services for a cold backup."
|
||||
manage.sh -d
|
||||
else
|
||||
echo -e "\n`date` - Skipping take down."
|
||||
fi
|
||||
|
||||
echo -e "\n`date` - Create the backup for '$DOCKER_HOME'."
|
||||
$time zip -r $file.tmp \
|
||||
@@ -43,8 +83,12 @@ ls -sh $file
|
||||
echo -e "\n`date` - Ensure other users can access the file."
|
||||
chmod -v 755 $file
|
||||
|
||||
echo -e "\n`date` - Bring services back up."
|
||||
manage.sh -u
|
||||
if [[ "$up" == "TRUE" ]]; then
|
||||
echo -e "\n`date` - Bring services back up."
|
||||
manage.sh -u
|
||||
else
|
||||
echo -e "\n`date` - Skipping restoring services."
|
||||
fi
|
||||
|
||||
## Finish ##
|
||||
|
||||
|
||||
Reference in New Issue
Block a user