test/lib/baserow.sh
2023-01-26 15:33:03 +00:00

122 lines
3.5 KiB
Bash

#!/bin/bash
#
# Baserow Service
PATH=$HOME/.docker/cli-plugins:/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
config_baserow() {
echo -ne "\n* Configuring /federated/apps/baserow container.."
spin &
SPINPID=$!
if [ ! -d "/federated/apps/baserow" ]; then
mkdir -p /federated/apps/baserow/data/baserow/data
fi
DOMAIN_ARRAY=(${DOMAIN//./ })
DOMAIN_FIRST=${DOMAIN_ARRAY[0]}
DOMAIN_LAST=${DOMAIN_ARRAY[1]}
cat > /federated/apps/baserow/docker-compose.yml <<EOF
version: '3.7'
services:
baserow:
image: baserow/baserow:\${IMAGE_VERSION}
container_name: baserow
hostname: baserow.$DOMAIN
domainname: $DOMAIN
restart: always
networks:
federated:
ipv4_address: 172.99.0.28
env_file:
- ./.env
volumes:
- ./data/baserow/data:/baserow/data
networks:
federated:
external: true
EOF
cat > /federated/apps/baserow/.env <<EOF
IMAGE_VERSION="1.14.0"
BASEROW_PUBLIC_URL=https://baserow.$DOMAIN
DATABASE_HOST=postgresql.$DOMAIN
DATABASE_NAME=baserow
DATABASE_USER=baserow
DATABASE_PASSWORD_FILE=/baserow/data/.federated.postgresql.secret
DATABASE_PORT=5432
BASEROW_AMOUNT_OF_WORKERS=1
BASEROW_AMOUNT_OF_GUNICORN_WORKERS=1
BASEROW_RUN_MINIMAL=1
BASEROW_TRIGGER_SYNC_TEMPLATES_AFTER_MIGRATION="false"
VIRTUAL_PROTO=http
VIRTUAL_PORT=80
VIRTUAL_HOST=baserow.$DOMAIN
EOF
chmod 600 /federated/apps/baserow/.env
echo "$BASEROW_SECRET" > /federated/apps/baserow/data/baserow/data/.federated.postgresql.secret
cat > /federated/apps/baserow/data/createuser.sh <<EOF
#!/bin/bash
curl -X POST -H 'Content-Type: application/json' -i http://localhost/api/user/ --data '{
"name": "admin",
"email": "admin@$DOMAIN",
"password": "$ADMINPASS"
}'
EOF
chmod +x /federated/apps/baserow/data/createuser.sh
kill -9 $SPINPID &> /dev/null
echo -ne "done."
}
start_baserow() {
# Start /federated/apps/baserow with output to /dev/null
echo -ne "\n* Starting /federated/apps/baserow service.."
spin &
SPINPID=$!
if [ $DEBUG ]; then
# Start /federated/apps/baserow with output to console for debug
docker-compose -f /federated/apps/baserow/docker-compose.yml -p baserow up
[ $? -eq 0 ] && echo -ne "done.\n" || fail "There was a problem starting service /federated/apps/baserow"
else
docker-compose -f /federated/apps/baserow/docker-compose.yml -p baserow up -d &> /dev/null
# Keep trying baserow port 3000 to make sure it's up
# before we proceed
RETRY="30"
while [ $RETRY -gt 0 ]; do
docker exec -it baserow curl http://localhost:3000 &> /dev/null
if [ $? -eq 0 ]; then
break
else
if [ "$RETRY" == 1 ]; then
docker-compose -f /federated/apps/baserow/docker-compose.yml -p baserow down &> /dev/null
kill -9 $SPINPID &> /dev/null
fail "There was a problem starting service /federated/apps/baserow\nCheck the output of 'docker logs baserow' or turn on\ndebug with -d"
fi
((RETRY--))
sleep 7
fi
done
fi
# Move createuser.sh and set it executable
mv /federated/apps/baserow/data/createuser.sh /federated/apps/baserow/data/baserow/data/
docker exec -it baserow chmod 755 /baserow/data/createuser.sh
[ $? -ne 0 ] && fail "Couldn't chown createuser.sh in /federated/apps/baserow container"
# Run createuser.sh inside baserow container
docker exec -it baserow /baserow/data/createuser.sh
[ $? -ne 0 ] && fail "Couldn't run createuser.sh in /federated/apps/baserow container"
kill -9 $SPINPID &> /dev/null
echo -ne "done."
}