/tock-docker

Docker and Docker-Compose implementation for Tock.

Primary LanguageShellGNU General Public License v3.0GPL-3.0

Gitter Build Status Docker Pulls

Docker images for Tock

Run images

Several docker files are available in the Docker Hub.

This project contains the source to build and deploy the docker files, and also provides docker-compose files for the whole Tock stack.

Windows users

  • Windows users, you need to run dos2unix to format the mongo setup script first:
dos2unix ./scripts/setup.sh

Prerequisite

Install mongosh: https://mongodb.com/docs/mongodb-shell/

Run the NLP stack: docker-compose.yml

    #get the last docker-compose file
    curl -o docker-compose.yml https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/docker-compose.yml
    #get the script to start mongo in replicaset mode
    mkdir -p scripts && curl -o scripts/setup.sh https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/scripts/setup.sh && chmod +x scripts/setup.sh
    #get the last tag
    curl -o .env https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/.env
    #launch the stack
    docker-compose up

And go to http://localhost to use the admin interface.

The default login/password is admin@app.com/password.

Connect to the mongo database from an IDE

In order to reach the mongo database from a client (if you run the bot in Intellij Idea for example), you need to add in your /etc/hosts (C:\windows\system32\drivers\etc\hosts for windows) these lines:

127.0.0.1 mongo
127.0.0.1 mongo2
127.0.0.1 mongo3

Run the Bot API stack: docker-compose-bot.yml

    #get the last docker-compose-bot file
    curl -o docker-compose-bot.yml https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/docker-compose-bot.yml
    #get the script to start mongo in replicaset mode
    mkdir -p scripts && curl -o scripts/setup.sh https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/scripts/setup.sh && chmod +x scripts/setup.sh
    #get the last tag
    curl -o .env https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/.env
    #launch the stack
    docker-compose -f docker-compose-bot.yml up

Run the Open Data Bot example: docker-compose-bot-open-data.yml

This docker-compose file starts the NLP stack with the Open Data Bot.

You will need a (free) SNCF Open Data key and

    #get the file
    curl -o bot-open-data-variables.env https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/bot-open-data-variables.env

Then edit the values:

    #Sncf open data api user
    tock_bot_open_data_sncf_api_user=
  • Also to test the bot with Messenger or Google Assistant, a secure ssl tunnel (for example ngrok) is required:
    ngrok http 8080
  • Then run the bot
    #get the last docker compose file
    curl -o docker-compose-bot-open-data.yml https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/docker-compose-bot-open-data.yml
    #get the script to start mongo in replicaset mode
    mkdir -p scripts && curl -o scripts/setup.sh https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/scripts/setup.sh && chmod +x scripts/setup.sh
    #get the last tag
    curl -o .env https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/.env
    #launch the stack
    docker-compose -f docker-compose-bot-open-data.yml up
  • Take the ngrok value (ie https://xxxx.ngrok.io ) and use it
    • In the webhook interface of Messenger settings, to specify :
    • In the Google Assistant project file

Now you can start to talk to the bot!

Build images

You will need Maven and Git.

    git clone https://github.com/theopenconversationkit/tock-docker.git
    cd tock-docker
    mvn package docker:build

Build images under corporate proxy

The docker build is based on buildx so build occurs on a buildx builder node, this node run as a docker container that unfortunatly doesn't inherit proxy environment variables.

To set your corporate proxy environment variable and use your coporate proxy during docker build stage you will need to define a custom docker buildx builder like this :

docker buildx create\
   --driver-opt env.http_proxy="http://yourcoporateproxy:3128"\
   --driver-opt env.https_proxy="http://yourcoporateproxy:3128"\
   --name builder_with_corporate_proxy

Note that the builder name builder_with_corporate_proxy can be customized.

Then define this environment variable :

BUILDX_BUILDER=builder_with_corporate_proxy mvn package docker:build

If needed you can remove / delete this builder using : docker buildx rm builder_with_corporate_proxy

Apple Silicon (M1/M2/...)

set PLATFORM env var

PLATFORM=arm64v8/ docker compose up

Run Mongo

./etc/startMongoOnARM    

Troubleshooting

RAG - My Open Search cluster / dashboard isn't working

Open Search needs severeal configuration to work :