55 lines
1.7 KiB
Bash
55 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Define your environment variables here
|
|
APP_NAME="online-energieausweis"
|
|
APP_PORT=3000
|
|
DB_CONTAINER_NAME="database"
|
|
DB_NAME="main"
|
|
DB_USER="main"
|
|
DB_PASSWORD="hHMP8cd^N3SnzGRR"
|
|
DB_PORT=5432
|
|
|
|
git_pull_force() {
|
|
git reset --hard HEAD
|
|
git clean -f -d
|
|
git pull origin main
|
|
}
|
|
|
|
# Zuerst müssen wir neue Änderungen von GitHub pullen.
|
|
cd ~/apps/$APP_NAME
|
|
git_pull_force;
|
|
|
|
# Dann bauen wir das Docker Image unserer Application
|
|
cd ~/apps/$APP_NAME
|
|
docker stop $APP_NAME
|
|
docker rm $APP_NAME
|
|
docker build -t $APP_NAME .
|
|
|
|
# SECTION: Startup jobs zu crontab hinzufügen.
|
|
# Erstmal den cronfile leeren.
|
|
crontab -r;
|
|
|
|
# Alle builds schlagen fehl wenn die Datenbank nicht da ist, also muss der Container zuerst gebaut werden.
|
|
(crontab -l ; echo "@reboot sudo ~/database/build.sh &") | crontab -;
|
|
(crontab -l ; echo "@reboot sudo ~/apps/online-energieausweis/build.sh &") | crontab -;
|
|
(crontab -l ; echo "@reboot sudo ~/apps/layout-tool/build.sh &") | crontab -;
|
|
|
|
# Wir legen ein persistent directory an
|
|
PERSISTENT_DIR="${HOME}/persistent/online-energieausweis";
|
|
mkdir -p $PERSISTENT_DIR;
|
|
|
|
# Wir legen einen .env file für unsere letsencrypt keys an.
|
|
rm -f ~/apps/$APP_NAME/.env;
|
|
touch ~/apps/$APP_NAME/.env;
|
|
echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/apps/$APP_NAME/.env;
|
|
echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/apps/$APP_NAME/.env;
|
|
|
|
# Und starten unsere App wieder.
|
|
docker run -d --name $APP_NAME --link $DB_CONTAINER_NAME \
|
|
-v "${PERSISTENT_DIR}:/persistent" \
|
|
-p "${APP_PORT}:80" \
|
|
-e DB_CONNECTION=postgresql://${DB_USER}:${DB_PASSWORD}@${DB_CONTAINER_NAME}:${DB_PORT}/${DB_NAME} \
|
|
-e DB_PORT=${DB_PORT} \
|
|
--env-file ~/apps/${APP_NAME}/.env \
|
|
$APP_NAME;
|