Docker images for Tock
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, you need to run dos2unix to format the mongo setup script first:
dos2unix ./scripts/setup.sh
Install mongosh: https://mongodb.com/docs/mongodb-shell/
#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.
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
#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
This docker-compose file starts the NLP stack with the Open Data Bot.
- Edit the file bot-open-data-variables.env and set the required env variables.
You will need a (free) SNCF Open Data key and
-
optionally a Messenger application with "messages" and "messaging_postbacks" webhook events activated - look at the Facebook documentation and Tock Messenger Configuration instructions.
-
optionally a Google Assistant project (see https://developers.google.com/actions/sdk/create-a-project ) - sample project file here: google_actions_fr.json Look at Tock Google Assistant configuration.
#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 :
- the url : https://xxxx.ngrok.io/messenger
- the verify token you set in tock_bot_open_data_webhook_verify_token env var
- In the Google Assistant project file
- In the webhook interface of Messenger settings, to specify :
Now you can start to talk to the bot!
git clone https://github.com/theopenconversationkit/tock-docker.git
cd tock-docker
mvn package docker:build
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
PLATFORM=arm64v8/ docker compose up
./etc/startMongoOnARM
Open Search needs severeal configuration to work :
- See Important host settings : https://opensearch.org/docs/latest/install-and-configure/install-opensearch/docker#important-host-settings
- Open Search needs a lot of free space on your disk when it starts you may have this lines in nodes logs
high disk watermark [90%] exceeded
if so increase your free storage by at least 10 Gb