Restructure Docker Util script.

This commit is contained in:
Buster Neece 2023-02-11 13:32:24 -06:00
parent be32f437cb
commit 177115d94b
No known key found for this signature in database
GPG Key ID: F1D2E64A0005E80E
1 changed files with 71 additions and 55 deletions

126
docker.sh
View File

@ -3,7 +3,22 @@
PODMAN_MODE=0
shopt -s expand_aliases
# Docker and Docker Compose aliases
d() {
if [[ $PODMAN_MODE -ne 0 ]]; then
podman "$@"
else
docker "$@"
fi
}
dc() {
if [[ $PODMAN_MODE -ne 0 ]]; then
podman-compose "$@"
else
docker-compose "$@"
fi
}
# Functions to manage .env files
__dotenv=
@ -381,7 +396,7 @@ run-installer() {
touch docker-compose.new.yml
local dc_config_test=$(docker-compose -f docker-compose.new.yml config 2>/dev/null)
local dc_config_test=$(dc -f docker-compose.new.yml config 2>/dev/null)
if [ $? -ne 0 ]; then
if ask "Docker Compose needs to be updated to continue. Update to latest version?" Y; then
install-docker-compose
@ -390,8 +405,8 @@ run-installer() {
curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/$AZURACAST_RELEASE_BRANCH/docker-compose.installer.yml -o docker-compose.installer.yml
docker-compose -p azuracast_installer -f docker-compose.installer.yml pull
docker-compose -p azuracast_installer -f docker-compose.installer.yml run --rm installer install "$@"
dc -p azuracast_installer -f docker-compose.installer.yml pull
dc -p azuracast_installer -f docker-compose.installer.yml run --rm installer install "$@"
rm docker-compose.installer.yml
}
@ -451,10 +466,14 @@ install() {
.env --file .env set AZURACAST_PGID="$(id -g)"
fi
docker-compose pull
if [[ $PODMAN_MODE -ne 0 ]]; then
.env --file .env set AZURACAST_PODMAN_MODE=true
fi
docker-compose run --rm web -- azuracast_install "$@"
docker-compose up -d
dc pull
dc run --rm web -- azuracast_install "$@"
dc up -d
exit
}
@ -505,13 +524,13 @@ install-dev() {
./web/static/ ./web/static/api/ \
./web/static/dist/ ./web/static/img/
docker-compose build
docker-compose run --rm web -- azuracast_install "$@"
dc build
dc run --rm web -- azuracast_install "$@"
docker-compose -p azuracast_frontend -f docker-compose.frontend.yml build
docker-compose -p azuracast_frontend -f docker-compose.frontend.yml run --rm frontend npm run build
dc -p azuracast_frontend -f docker-compose.frontend.yml build
dc -p azuracast_frontend -f docker-compose.frontend.yml run --rm frontend npm run build
docker-compose up -d
dc up -d
exit
}
@ -583,23 +602,23 @@ update() {
)"
if [[ ${COMPOSE_FILES_MATCH} -ne 0 ]]; then
docker-compose -f docker-compose.new.yml pull
docker-compose down --timeout 30
dc -f docker-compose.new.yml pull
dc down --timeout 60
cp docker-compose.yml docker-compose.backup.yml
mv docker-compose.new.yml docker-compose.yml
else
rm docker-compose.new.yml
docker-compose pull
docker-compose down --timeout 30
dc pull
dc down --timeout 60
fi
docker-compose run --rm web -- azuracast_update "$@"
docker-compose up -d
dc run --rm web -- azuracast_update "$@"
dc up -d
if ask "Clean up all stopped Docker containers and images to save space?" Y; then
docker system prune -f
d system prune -f
fi
echo "Update complete!"
@ -629,7 +648,7 @@ update-self() {
# Usage: ./docker.sh cli [command]
#
cli() {
exec docker-compose exec --user="azuracast" web azuracast_cli "$@"
exec dc exec --user="azuracast" web azuracast_cli "$@"
}
#
@ -637,14 +656,14 @@ cli() {
# Usage: ./docker.sh bash
#
bash() {
exec docker-compose exec --user="azuracast" web bash
exec dc exec --user="azuracast" web bash
}
#
# Enter the MariaDB database management terminal with the correct credentials.
#
db() {
exec docker-compose exec web azuracast_db
exec dc exec web azuracast_db
}
#
@ -666,12 +685,12 @@ backup() {
.env --file .env set AZURACAST_PGID="$(id -g)"
fi
docker-compose exec --user="azuracast" web azuracast_cli azuracast:backup "/var/azuracast/backups/${BACKUP_FILENAME}" "$@"
dc exec --user="azuracast" web azuracast_cli azuracast:backup "/var/azuracast/backups/${BACKUP_FILENAME}" "$@"
# Move from Docker volume to local filesystem
docker run --rm -v "azuracast_backups:/backup_src" \
-v "$BACKUP_DIR:/backup_dest" \
busybox mv "/backup_src/${BACKUP_FILENAME}" "/backup_dest/${BACKUP_FILENAME}"
d run --rm -v "azuracast_backups:/backup_src" \
-v "$BACKUP_DIR:/backup_dest" \
busybox mv "/backup_src/${BACKUP_FILENAME}" "/backup_dest/${BACKUP_FILENAME}"
echo "Backup completed."
exit
@ -703,14 +722,14 @@ restore() {
exit 1
fi
docker-compose down
dc down
# Remove most AzuraCast volumes but preserve some essential ones.
docker volume rm -f $(docker volume ls | grep 'azuracast' | grep -v 'station\|install' | awk 'NR>1 {print $2}')
docker volume create azuracast_backups
d volume rm -f $(d volume ls | grep 'azuracast' | grep -v 'station\|install' | awk 'NR>1 {print $2}')
d volume create azuracast_backups
# Move from local filesystem to Docker volume
docker run --rm -v "$BACKUP_DIR:/backup_src" \
d run --rm -v "$BACKUP_DIR:/backup_src" \
-v "azuracast_backups:/backup_dest" \
busybox mv "/backup_src/${BACKUP_FILENAME}" "/backup_dest/${BACKUP_FILENAME}"
@ -720,25 +739,25 @@ restore() {
.env --file .env set AZURACAST_PGID="$(id -g)"
fi
docker-compose run --rm web -- azuracast_restore "/var/azuracast/backups/${BACKUP_FILENAME}" "$@"
dc run --rm web -- azuracast_restore "/var/azuracast/backups/${BACKUP_FILENAME}" "$@"
# Move file back from volume to local filesystem
docker run --rm -v "azuracast_backups:/backup_src" \
d run --rm -v "azuracast_backups:/backup_src" \
-v "$BACKUP_DIR:/backup_dest" \
busybox mv "/backup_src/${BACKUP_FILENAME}" "/backup_dest/${BACKUP_FILENAME}"
docker-compose down --timeout 30
docker-compose up -d
dc down --timeout 30
dc up -d
else
docker-compose down
dc down
# Remove most AzuraCast volumes but preserve some essential ones.
docker volume rm -f $(docker volume ls | grep 'azuracast' | grep -v 'station\|backups\|install' | awk 'NR>1 {print $2}')
d volume rm -f $(d volume ls | grep 'azuracast' | grep -v 'station\|backups\|install' | awk 'NR>1 {print $2}')
docker-compose run --rm web -- azuracast_restore "$@"
dc run --rm web -- azuracast_restore "$@"
docker-compose down --timeout 30
docker-compose up -d
dc down --timeout 30
dc up -d
fi
fi
exit
@ -761,18 +780,18 @@ restore-legacy() {
cd "$APP_BASE_DIR" || exit
if [ -f "$BACKUP_PATH" ]; then
docker-compose down --timeout 30
dc down --timeout 30
docker volume rm azuracast_db_data azuracast_station_data
docker volume create azuracast_db_data
docker volume create azuracast_station_data
d volume rm azuracast_db_data azuracast_station_data
d volume create azuracast_db_data
d volume create azuracast_station_data
docker run --rm -v "$BACKUP_DIR:/backup" \
d run --rm -v "$BACKUP_DIR:/backup" \
-v azuracast_db_data:/azuracast/db \
-v azuracast_station_data:/azuracast/stations \
busybox tar zxvf "/backup/$BACKUP_FILENAME"
docker-compose up -d
dc up -d
else
echo "File $BACKUP_PATH does not exist in this directory. Nothing to restore."
exit 1
@ -788,9 +807,9 @@ restore-legacy() {
uninstall() {
if ask "This operation is destructive and will wipe your existing Docker containers. Continue?" N; then
docker-compose down -v
docker-compose rm -f
docker volume prune -f
dc down -v
dc rm -f
d volume prune -f
echo "All AzuraCast Docker containers and volumes were removed."
echo "To remove *all* Docker containers and volumes, run:"
@ -824,8 +843,8 @@ letsencrypt-create() {
change-ports() {
setup-ports
docker-compose down --timeout 30
docker-compose up -d
dc down --timeout 60
dc up -d
}
#
@ -833,12 +852,12 @@ change-ports() {
#
up() {
echo "Starting up AzuraCast services..."
docker-compose up -d
dc up -d
}
down() {
echo "Shutting down AzuraCast services..."
docker-compose down --timeout 30
dc down --timeout 60
}
restart() {
@ -852,9 +871,6 @@ cd "$( dirname "${BASH_SOURCE[0]}" )" || exit
# Podman support
if [[ $(command -v podman) ]]; then
PODMAN_MODE=1
alias docker=podman
alias docker-compose=podman-compose
fi
"$@"