-
Notifications
You must be signed in to change notification settings - Fork 1
Demo Server Guide
- Add token to githubtoken.txt (for downloading expression-evaluator)
- requires token that has read access to packages on server repo
- Edit
dockerise.sh
and updateSERVER_BRANCH
,WEB_APP_BRANCH
andIMAGE_NAME
cd docker
./dockerise.sh
Should take a while to run, will build a local image
- Edit
run.sh
- include correct
SMTP_PASSWORD
(from Bitwarden or your personal .env file) - Change test build to name of image created
- include correct
- Run it:
./run.sh
- Login to docker hub (web site) to see the images in there:
- msupplyfoundation - password in Bitwarden (Shared-Admin)
- List local images to get the “image ID” and "tag name"
docker image ls
- Create tag:
docker tag <image_id> <account-name>/<docker-repo>:<tag-name>
- Push new tag:
docker push <image_id> <account-name>/<docker-repo>:<tag-name>
Image will upload to Docker hub
Example:
- account-name:
msupplyfoundation
- docker-repo:
mflow-demo
- tag-name:
front-demo-19-08-2021_back-demo-19-08-2021_pg-12_node-14
docker tag dbb2111d56e9 msupplyfoundation/mflow-demo:front-demo-19-08-2021_back-demo-19-08-2021_pg-12_node-14
docker push msupplyfoundation/mflow-demo:front-demo-19-08-2021_back-demo-19-08-2021_pg-12_node-14
-
Get key file from Bitwarden (openstack-irims-demo-keypair) and save locally (e.g. in
~/Documents/private/mflowkey.pem
) -
SSH login to server:
export KEY_LOC='~/Documents/private/mflowkey.pem' (or your local location) sudo ssh -i $KEY_LOC [email protected]
-
View commit hashes of currently running images:
sudo docker container ls
-
Stop all instances:
sudo docker stop <hashes… >
-
Pull image from docker hub:
sudo docker pull <full-image-name>
-
Run image:
sudo docker run -dti -p 8000:3000 -e 'SMTP_PASSWORD=<password>' -e 'WEB_HOST=https://irims-demo.msupply.org:50000' --name mflow-demo-on-8000 msupplyfoundation/mflow-demo:front-demo-19-08-2021_back-demo-19-08-2021_pg-12_node-14
This will launch one instance. To launch other instances in their own container, run the same command, but change:- name
- port 8000
- WEB_HOST url
The system will be launched with “basic_snapshot” data. Upload and run a new snapshot as required
- Run
sudo docker stop <name>
(name from above, or can use container id) - Remove container:
sudo docker rm <name>
- Re-run as above. Note: this resets the container to initial state, including database reset. If you want to preserve existing data, you’ll need to take a snapshot first, then reload after restart.
- List local images
sudo docker images
- Remove all containers
sudo docker rm $(sudo docker ps -a -q)
- Remove all images
sudo docker rmi -f $(sudo docker images -a -q)
- Remove all images
sudo docker volume prune
You can access the command line of a particular container instance with the following:
sudo docker exec -ti <name-or-container-id> /bin/bash
From there the following commands might be useful:
- view environment variables:
printenv
- check the server log:
tail -n 100 /var/log/application_manager/server.log
Edit scripts in ./docker/demo_server/
, then:
scp -r -i $KEY_LOC ./demo_server [email protected]:/home/ubuntu/
scp -i $KEY_LOC [email protected]:/etc/nginx/sites-enabled/default ./demo_server/nginx_config
# cannot directly replace default config, need to do it as sudo, so from within docker instance
sudo mv demo_server/nginx_config/default /etc/nginx/sites-enabled/
Everything should be configured via default
config. Cert bot was installed and should auto update certs (https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx).
After changing config as per above, run
sudo service nginx restart
Logs are in /var/log/nginx
docker-compose will complain if directories are not present, create them if needed (they will persist when restarting image, even if docker-compose down
was run)
mkdir app_snapshots_on_port_8000
mkdir app_postgres_on_port_8000
mkdir grafana_on_port_8001
# grafana user has to own the local directory that's mounted to volume
# https://community.grafana.com/t/new-docker-install-with-persistent-storage-permission-problem/10896/2
sudo chown 472 grafana_on_port_8001
mkdir app_snapshots_on_port_8002
mkdir app_postgres_on_port_8002
mkdir grafana_on_port_8003
sudo chown 472 grafana_on_port_8003
mkdir app_snapshots_on_port_8004
mkdir app_postgres_on_port_8004
mkdir grafana_on_port_8005
sudo chown 472 grafana_on_port_8005
mkdir app_snapshots_on_port_8006
mkdir app_postgres_on_port_8006
mkdir grafana_on_port_8007
sudo chown 472 grafana_on_port_8007
mkdir app_snapshots_on_port_8008
mkdir app_postgres_on_port_8008
mkdir grafana_on_port_8009
sudo chown 472 grafana_on_port_8009
export TAG='front-demo-19-08-2021_back-demo-19-08-2021_pg-12_node-14'
# -d is for detached, if you want to see all output then start without -d
PORT_APP=8000 PORT_DASH=8001 sudo -E docker-compose --project-name 'mflow-on-8000' up -d
PORT_APP=8002 PORT_DASH=8003 sudo -E docker-compose --project-name 'mflow-on-8002' up -d
PORT_APP=8004 PORT_DASH=8005 sudo -E docker-compose --project-name 'mflow-on-8004' up -d
PORT_APP=8006 PORT_DASH=8007 sudo -E docker-compose --project-name 'mflow-on-8006' up -d
PORT_APP=8008 PORT_DASH=8009 sudo -E docker-compose --project-name 'mflow-on-8008' up -d
# don't need bash inside contiainer for this
sudo docker exec -ti mflow-on-8000_app_1 cat /var/log/application_manager/server.log
sudo docker exec -ti mflow-on-8000_app_1 cat /var/log/application_manager/graphile.log
# to stop
sudo docker-compose --project-name 'mflow-on-8000' stop
# to remove (when new version is out)
sudo docker-compose --project-name 'mflow-on-8000' down
Powered by mSupply