Initial commit.

This commit is contained in:
yohan 2024-01-30 11:26:25 +01:00
commit d133dcadab
5 changed files with 123 additions and 0 deletions

56
create.sh Executable file
View File

@ -0,0 +1,56 @@
#!/bin/bash
#Absolute path to this script
SCRIPT=$(readlink -f $0)
#Absolute path this script is in
SCRIPTPATH=$(dirname $SCRIPT)
STACK=$(basename "$SCRIPTPATH")
export RUN_DIRECTORY="/usr/local/docker-mounted-files/${STACK}"
cd "$SCRIPTPATH"
source vars
sudo docker-compose down
sudo rm -rf "${RUN_DIRECTORY}"
sudo mkdir -p "${RUN_DIRECTORY}"
sudo chmod a+rx "${RUN_DIRECTORY}"
cd "${RUN_DIRECTORY}"
test -z $1 || HOST="_$1"
test -z $2 || INSTANCE="_$2"
test -z $KEY && { echo "KEY is not defined."; exit 1; }
if ! test -f ~/secrets.tar.gz.enc
then
curl -o ~/secrets.tar.gz.enc "https://${CLOUD_SERVER}/s/${KEY}/download?path=%2F&files=secrets.tar.gz.enc"
if ! test -f ~/secrets.tar.gz.enc
then
echo "ERROR: ~/secrets.tar.gz.enc not found, exiting."
exit 1
fi
fi
openssl enc -aes-256-cbc -d -in ~/secrets.tar.gz.enc \
| sudo tar -zxv --strip 2 secrets/${STACK}${HOST}${INSTANCE}/conf.yml \
|| { echo "Could not extract from secrets archive, exiting."; rm -f ~/secrets.tar.gz.enc; exit 1; }
sudo chown root. conf.yml
cd "$SCRIPTPATH"
for NETWORK in metricsnet mysqlnet
do
sudo docker network inspect ${NETWORK} &> /dev/null && continue
sudo docker network create ${NETWORK}
sudo docker network inspect ${NETWORK} &> /dev/null || \
{ echo "ERROR: could not create network ${NETWORK}, exiting."; exit 1; }
done
IMAGE="store-metrics-in-db"
REPO="docker-store-metrics-in-db"
unset VERSION_STORE_METRICS_IN_DB
export VERSION_STORE_METRICS_IN_DB=$(git ls-remote https://${GIT_SERVER}/yohan/${REPO}.git| head -1 | cut -f 1|cut -c -10)
mkdir -p ~/build
git clone https://${GIT_SERVER}/yohan/${REPO}.git ~/build/${REPO}
sudo docker build -t ${IMAGE}:$VERSION_STORE_METRICS_IN_DB ~/build/${REPO}
sudo -E bash -c 'docker-compose up --no-start --force-recreate'
rm -rf ~/build

31
docker-compose.yml Normal file
View File

@ -0,0 +1,31 @@
version: "2.1"
services:
store-metrics-in-db:
container_name: store-metrics-in-db
image: store-metrics-in-db:$VERSION_STORE_METRICS_IN_DB
networks:
- mysqlnet
- metricsnet
ports:
- "3001:3001/tcp"
expose:
- "3001/tcp"
environment:
FLASK_APP: api.py
#FLASK_ENV: development
FLASK_ENV: production
FLASK_RUN_HOST: "0.0.0.0"
FLASK_RUN_PORT: 3001
volumes:
- /mnt/volumes/store-metrics-in-db/data/migrations:/root/migrations:z
- ${RUN_DIRECTORY}/conf.yml:/root/conf.yml
networks:
mysqlnet:
external: true
metricsnet:
external: true

24
install.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
#Absolute path to this script
SCRIPT=$(readlink -f $0)
#Absolute path this script is in
SCRIPTPATH=$(dirname $SCRIPT)
STACK=$(basename "$SCRIPTPATH")
cat << EOF > /etc/systemd/system/${STACK}.service
[Unit]
Description=Starting ${STACK}
After=network-online.target firewalld.service docker.service docker.socket
Wants=network-online.target docker.service
Requires=docker.socket
[Service]
Type=oneshot
User=$SUDO_USER
ExecStart=$SCRIPTPATH/start.sh
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable ${STACK}.service

8
start.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/bash
#Absolute path to this script
SCRIPT=$(readlink -f $0)
#Absolute path this script is in
SCRIPTPATH=$(dirname $SCRIPT)
cd $SCRIPTPATH
sudo docker-compose start

4
vars Normal file
View File

@ -0,0 +1,4 @@
#!/bin/bash
export CLOUD_SERVER=cloud.scimetis.net
export GIT_SERVER=git.scimetis.net