123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- #!/bin/bash
- ## Import .env file
- source .env
- ##Install docker adnd docker-compose
- if [ -f /usr/bin/docker ]
- then
- echo 'Docker Exist'
- else
- apt update && apt upgrade -y
- apt-get install -y apt-transport-https ca-certificates curl software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
- add-apt-repository "deb https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") $(lsb_release -cs) stable"
- apt-get update && apt-get install -y docker-ce=$(apt-cache madison docker-ce | grep 18.06 | head -1 | awk '{print $3}')
- fi
- if [ -f /usr/local/bin/docker-compose ]
- then
- echo 'Docker Compose Exist'
- else
- curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
- fi
- if [ -f /usr/local/bin/memcache-top ]
- then
- echo 'Memcached-top Exist'
- else
- curl -o /usr/local/bin/memcache-top https://raw.githubusercontent.com/eculver/memcache-top/master/memcache-top
- chmod a+x /usr/local/bin/memcache-top
- fi
- ## Clone Barecode
- cd /opt
- dir=back
- if [ -d $dir ]; then
- cd $dir
- git pull https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_backend
- cd /opt
- else
- git clone https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_backend back
- cd /opt
- fi
- cp /opt/back/requirements.txt /opt/barcode-docker/docker-back/requirements.txt
- ## Clone Frontend
- cd /opt
- dir=front
- if [ -d $dir ]; then
- cd $dir
- git pull https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_frontend
- docker run -ti --rm -v "$PWD":/srv -w /srv node:8 npm install
- cd /opt
- else
- git clone https://$GIT_USER:$GIT_PASS@gogs.earthsquad.global/olarid7852/barcode_frontend front
- cd $dir
- docker run -ti --rm -v "$PWD":/srv -w /srv node:8 npm install
- cd /opt
- fi
-
- # Edit frontend configration
- touch /opt/front/src/.config.js
- cat << EOF > /opt/front/src/.config.js
- var apiHostname = 'http://$IP_ADDR:8000/api/'
- var SCAN_INTERVAL = 800
- export {
- apiHostname,
- SCAN_INTERVAL
- }
- EOF
- ## Edit backend configutaion
- cat << EOF > /opt/back/barcode/local.py
- import os
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- # for mysql
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'backend_dev',
- 'USER': 'backend',
- 'PASSWORD': '$ADMIN_PASS',
- 'HOST': 'mysql',
- 'PORT': '3306',
- }
- }
- ALLOWED_HOSTS = [
- '*',
- ]
- BROKER_URL = "amqp://$ADMIN_USER:$ADMIN_PASS@rabbit:5672/barcode"
- CACHES = {
- 'default': {
- 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
- 'LOCATION': 'memcached:11211',
- }
- }
- EOF
- ## Build and start docker images
- cd /opt/barcode-docker
- docker-compose up -d --build --no-recreate
- sleep 20
- docker exec -i barcode-back bash -c 'python manage.py makemigrations'
- docker exec -i barcode-back bash -c 'python manage.py migrate'
- ADMIN=`docker exec -i barcode-mysql mysql -uroot -pgW3KSoZt5K5o9V99YJUH backend_dev -e "SELECT * FROM auth_user;" | grep "admin"`
- if [ -z "$ADMIN" ]
- then
- docker exec -ti barcode-back ./manage.py shell -c "from django.contrib.auth.models import User; User.objects.create_superuser('$ADMIN_USER', 'admin@earthsquad.global', '$ADMIN_PASS')"
- else
- echo "User Admin Exist"
- fi
- ENUS=`docker exec -ti barcode-mysql mysql -uroot -pgW3KSoZt5K5o9V99YJUH backend_dev -e "SELECT * FROM language_language;" | grep "EN-US"`
- if [ -z "$ENUS" ]
- then
- cat << "EOF" > /tmp/insert.sql
- INSERT INTO `language_lengthunit` (`id`, `name`, `conversion_rate`) VALUES
- (1, 'M', 100),
- (2, 'cm', 1);
- INSERT INTO `language_weightunit` (`id`, `name`, `conversion_rate`) VALUES
- (1, 'KG', 1000),
- (2, 'g', 1);
- INSERT INTO `language_language` (`id`, `name`, `length_unit_id`, `weight_unit_id`) VALUES
- (1, 'EN-US', 1, 1),
- (2, 'DE-DE', 1, 1);
- EOF
- docker exec -i barcode-mysql mysql --user=backend --password=$ADMIN_PASS backend_dev < /tmp/insert.sql
- cat << "EOF" > /tmp/insert.sql
- INSERT INTO `scanapp_producttype` (`id`, `is_packaging_material`, `icon`, `deleted`, `name`) VALUES
- (1, 0, 'icon_metal', 0, 'Product Types'),
- (2, 1, 'icon_glass', 0, 'Recycling Materials'),
- (3, 1, 'icon_metall', 0, 'Aluminium'),
- (4, 1, 'biod', 0, 'Biodegradable'),
- (5, 1, 'paper', 0, 'Paper and Cardboard'),
- (6, 1, 'icon_div', 0, 'E-Waste'),
- (7, 1, 'icon_battery', 0, 'Batteries'),
- (8, 1, 'plastic', 0, 'Plastic'),
- (9, 1, 'PET', 0, 'PET-Plastic'),
- (12, 1, 'icon_metal', 0, 'Metal'),
- (13, 1, 'Wood', 0, 'Wood'),
- (14, 1, 'Tires', 0, 'Tires'),
- (15, 1, 'glass', 0, 'Glass'),
- (17, 1, 'nores-plastic', 0, 'Waste (non-recyclable)');
- INSERT INTO `scanapp_producttypehier` (`id`, `child_id`, `parent_id`) VALUES
- (1, 3, 12),
- (2, 7, 6),
- (3, 9, 8),
- (4, 12, 2),
- (5, 4, 2),
- (6, 5, 2),
- (7, 6, 2),
- (8, 8, 2),
- (9, 14, 2),
- (10, 13, 4),
- (11, 15, 2),
- (12, 17, 2);
- INSERT INTO `scanapp_producttypetranslation` (`id`, `translation`, `language_id`, `word_id_id`) VALUES
- (1, 'Products', 1, 1),
- (2, 'Produkte', 2, 1),
- (3, 'Recycling Materials', 1, 2),
- (4, 'Recycling Material', 2, 2),
- (5, 'Aluminium', 1, 3),
- (6, 'Aluminium', 2, 3),
- (7, 'Biodegradable', 1, 4),
- (8, 'Bio-Abfall', 2, 4),
- (9, 'Paper and Cardboard', 1, 5),
- (10, 'Papier und Karton', 2, 5),
- (11, 'E-Waste', 1, 6),
- (12, 'Elektroschrott', 2, 6),
- (13, 'Batteries', 1, 7),
- (14, 'Batterien', 2, 7),
- (15, 'Plastic', 1, 8),
- (16, 'Plastik', 2, 8),
- (17, 'PET-Plastic', 1, 9),
- (18, 'PET-Plastik', 2, 9),
- (21, 'Metall', 2, 12),
- (22, 'Metal', 1, 12),
- (23, 'Wood', 1, 13),
- (24, 'Holz', 2, 13),
- (25, 'Reifen', 2, 14),
- (26, 'Tires', 1, 14),
- (27, 'Glass', 1, 15),
- (28, 'Glas', 2, 15),
- (29, 'Waste (non-recyclable)', 1, 17),
- (30, 'Restmüll (nicht recyclebar)', 2, 17);
- EOF
- docker exec -i barcode-mysql mysql --user=backend --password=$ADMIN_PASS backend_dev < /tmp/insert.sql
- docker exec -i barcode-back bash -c 'python manage.py fillenglish'
- else
- echo "Language table are exist "
- fi
- docker exec -i barcode-back bash -c 'python manage.py populate_statistics_index'
- docker exec -i barcode-back bash -c 'python manage.py populate_statistics_index_all_user'
- docker exec -i barcode-back bash -c 'python manage.py collectstatic --no-input'
- cd /opt/barcode-docker
- docker-compose restart
- echo -e "==================================== You can direct navigate your browser. =========================================="
- echo -e "====================================================================================================================="
- echo -e "Backend ---> http://$IP_ADDR:8000/api/admin/ ---> Username=$ADMIN_USER Password=$ADMIN_PASS
- Frontend ---> http://$IP_ADDR:8080/ ---> Username=$ADMIN_USER Password=$ADMIN_PASS
- Mysql-admin ---> http://$IP_ADDR:5000/ ---> Username=backend Password=$ADMIN_PASS
- Celery-Flower ---> http://$IP_ADDR:5555/"
- echo -e "====================================================================================================================="
|