tock-docker
tock-docker copied to clipboard
Docker and Docker-Compose implementation for Tock.
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 [email protected]/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.
- 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!
Build images
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