|
- #!/bin/bash
-
- # Start some stuff: Sidekiq Web UI, collectd web UI, MariaDB container, Redis container.
- #
- # Looks like shell scripts are also going into here. You may additionally backup_database.
- #
- # Hey it's starting to turn into a real deploy script!
-
- set -euox
-
- DOCKER=podman
- MARIADB_IMAGE=localhost/alpine-mariadb
- REDIS_IMAGE=localhost/redis-7.2-rc-alpine
- SCHEMACRAWLER_DIR=$HOME/schemacrawler-16.20.4-bin
-
- function message(){
- plus="+"
- [[ $1 -ne 0 ]] && plus=-
- shift
- echo "[${plus}] $@"
- }
-
- # This will probably either go away or be moved to mariadb database as we migrate (eventually)
- function backup_database() {
- shift
- running_container=
- if [ $# -eq 0 ]
- then
- running_container=$(${DOCKER} ps --format '{{.Image}} {{.Names}}' | grep cl-deck-builder2 | awk '{print $2}')
- else
- running_container="$1"
- fi
- if [ "x$running_container" = "x" ]
- then
- message 1 "deck builder container not running?"
- else
- message 0 "found $running_container"
- message 0 "copying database $running_container:/home/quicklisp/quicklisp/local-projects/cl-deck-builder2/deck_builder.sqlite3"
- $DOCKER cp "$running_container:/home/quicklisp/quicklisp/local-projects/cl-deck-builder2/deck_builder.sqlite3" \
- ~/sqlite3/$(date '+%Y-%m-%d')-deck_builder.sqlite3
- ls -l ~/sqlite3/$(date '+%Y-%m-%d')-deck_builder.sqlite3
- fi
- }
-
- function psychiq_up(){
- ps -C rackup >/dev/null
- if [ $? -ne 0 ]
- then
- message 0 "Starting Psychiq Web UI"
- rackup /home/user/code/cl-deck-builder2/ruby/config.ru &
- else
- message 1 "Psychiq Web UI already running."
- fi
- }
-
- function collectd_up() {
- ps -C python3 >/dev/null
- if [ $? -ne 0 ]
- then
- message 0 "Starting collectd Web UI"
- pushd /home/user/code/alpine-collectd-web/
- python3 runserver.py &
- popd
- else
- message 1 "collectd Web UI already running."
- fi
- }
-
- function mariadb_up (){
- mkdir -p ~/mariadb
- $DOCKER ps 2>&1| grep 3306 2>&1>/dev/null
- if [ $? -ne 0 ]
- then
- $DOCKER run --restart always -d -P -p 3306:3306 -v $HOME/mariadb:/var/lib/mysql $MARIADB_IMAGE
- else
- message 1 "mariadb already running."
- fi
- }
-
- function redis_up(){
- mkdir -p ~/redis
- $DOCKER ps 2>&1| grep 6379 2>&1>/dev/null
- if [ $? -ne 0 ]
- then
- $DOCKER run --restart always -d -P -p 6379:6379 -v $HOME/redis:/data $REDIS_IMAGE
- else
- message 1 "redis already running."
- fi
- }
-
- function schemacrawler(){
- ORIG_DIR="$(pwd)"
- cd $SCHEMACRAWLER_DIR
- # Gentoo Strikes Again!
- # https://github.com/schemacrawler/SchemaCrawler/issues/394
- _JAVA_OPTIONS=-Djava.io.tmpdir=. \
- bash bin/schemacrawler.sh \
- --user= \
- --password= \
- --database "$ORIG_DIR/deck_builder.sqlite3" \
- --server sqlite \
- --weak-associations=true \
- -i standard \
- -c schema \
- -o ~/www/db.png
-
- chown :www-data ~/www/db.png
- }
-
- function main(){
- # backup_database
- psychiq_up
- collectd_up
- mariadb_up
- redis_up
- }
-
- if [ $# -lt 1 ]
- then
- message 1 "Usage: $0 [main | backup_database | psychiq_up | collectd_up | mariadb_up | redis_up | schemacrawler]"
- else
- "$1" "$@"
- fi
|