How to Install Docker

Follow the instructions here: https://docs.docker.com/get-docker/

Acquire/Configure Credentials

Shell script example using Traefik:

Using traefik is probably the easier solution in most cases. There are many benefits and one of the most important thing is that it will make the secure connection much easier and forwarding the components without complicated settings. However, there is prerequisite that your DNS should be pointing something like *.your.domain to your host. By doing this, the components will be able to have the DNS of traefik.your.domain, minio.your.domain, 

# system setting
export DOCKERIZED=true

# if use AWS algorithm, then you must use a static IP address
export LOCAL_ALGORITHM=true

# single user version vs multiple users
export SINGLE_USER=false

#set up home directory
export HOME=/your/home/directory

#set server info
export SERVER=smm.server.com

# settings for CILOGON
export CILOGON_CLIENT_ID=<<cilogon id>>
export CILOGON_CLIENT_SECRET=<<cilogon client secret>>
export CILOGON_CALLBACK_URL=<<ci logon callback url>>

export MINIO_URL=https://minio-api.${SERVER}
export MINIO_PUBLIC_ACCESS_URL=https://minio-api.${SERVER}
export BUCKET_NAME=macroscope-smile
export SMILE_GRAPHQL_URL=https://graphql.${SERVER}/graphql

# create mounted volumes on host machine
mkdir -p ${HOME}/smile_data/${BUCKET_NAME}
mkdir -p ${HOME}/smile_user
mkdir -p ${HOME}/smile

export RABBITMQ_HOST=${SERVER}
export RABBITMQ_URL=amqp://${SERVER}
export REDIS_URL=redis://redis

# email notification
#export EMAIL_HOST=<<email host>>
#export EMAIL_PORT=465
#export EMAIL_FROM_ADDRESS=<<email from address>>
#export EMAIL_PASSWORD=<<email password>>

# align with AWS
export AWS_ACCESSKEY=<<aws_accesskey>>
export AWS_ACCESSKEYSECRET=<<aws_accesskeysecret>>

# social media platforms
export REDDIT_CLIENT_ID=<<reddit client id>>
export REDDIT_CLIENT_SECRET=<<reddit client secret>>
export REDDIT_CALLBACK_URL=<<reddit callback url>>
#export TWITTER_CONSUMER_KEY=<<twitter consumer key>>
#export TWITTER_CONSUMER_SECRET=<<twitter consumer secret>>
export TWITTER_V2_CLIENT_ID=<<twitter v2 client id>>
export TWITTER_V2_CLIENT_SECRET=<<twitter v2 client secret>>
export TWITTER_V2_CALLBACK_URL=<<twitter v2 callback url>>

# export
export BOX_CLIENT_ID=<box client id>
export BOX_CLIENT_SECRET=<<box client secret>>
export DROPBOX_CLIENT_ID=<<dropbox client id>>
export DROPBOX_CLIENT_SECRET=<<dropbox client secret>>
export GOOGLE_CLIENT_ID=<<google client id>>
export GOOGLE_CLIENT_SECRET=<<google client secret>>

export CLOWDER_BASE_URL=https://clowder.server.com/
export CLOWDER_GLOBAL_KEY=<<clowder global key>>
export CLOWDER_ON=false

# start
docker-compose -f docker-compose-smile-traefik.yml -d up

# stop
# docker-compose -f docker-compose-smile.yml down -v

# update latest image from docker hub
# docker-compose -f docker-compose-smile.yml pull

Variables Explained

More details about variables are documented in here

Additional Notes:

How to Run

All images you needed to run the stack have already been pushed to Docker Hub: https://hub.docker.com/orgs/socialmediamacroscope/repositories
All you need is the YAML configuration file to run.

You must acquire either one of the below docker compose YAML file

Latest docker compose yaml file here:

To Start

run the aforementioned shell script:

sh docker-command-smile.sh

or

export all environment variables and then

docker-compose -f docker-compose-smile.yml up

Then you should be able to access SMILE at http://<your IP address>:8001

To Stop

docker-compose -f docker-compose-smile.yml down -v

Update

docker-compose -f docker-compose-smile.yml pull


To remove Existing volume

docker volume rm {volume name. e.g.rabbitmq_smile_content_data}


Appendix:

SMILE and BAE images on Docker Hub

https://hub.docker.com/orgs/socialmediamacroscope/repositories

Architectures

Docker vs Hubzero Tool mode (legacy)

export DOCKERIZED=true → Dockerized version
export DOCKERIZED=false → Hubzero Tool version, can be run by command npm start

Increase Memory and CPU allocation for Docker

Some of the analysis algorithms are very memory intensive.  Make sure you adjust memory and CPU for Docker to achieve the optimal performance.  Make sure you set values smaller than your host machine.