Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/theopenconversationkit/tock-docker
Docker and Docker-Compose implementation for Tock.
https://github.com/theopenconversationkit/tock-docker
bot docker docker-compose tock
Last synced: about 4 hours ago
JSON representation
Docker and Docker-Compose implementation for Tock.
- Host: GitHub
- URL: https://github.com/theopenconversationkit/tock-docker
- Owner: theopenconversationkit
- License: gpl-3.0
- Created: 2017-04-12T22:48:04.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-10-21T16:32:33.000Z (26 days ago)
- Last Synced: 2024-10-22T04:06:32.083Z (25 days ago)
- Topics: bot, docker, docker-compose, tock
- Language: Shell
- Homepage: https://doc.tock.ai
- Size: 794 KB
- Stars: 19
- Watchers: 21
- Forks: 28
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Gitter](https://badges.gitter.im/tockchat/Lobby.svg)](https://gitter.im/tockchat/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=body_badge)
[![Build Status](https://app.travis-ci.com/theopenconversationkit/tock-docker.png)](https://app.travis-ci.com/theopenconversationkit/tock-docker)
[![Docker Pulls](https://img.shields.io/docker/pulls/tock/nlp_api.svg)](https://hub.docker.com/u/tock/)# Docker images for [Tock](https://github.com/theopenconversationkit/tock)
## Run images
Several docker files are available in the [Docker Hub](https://hub.docker.com/r/tock/).
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:
```sh
dos2unix ./scripts/setup.sh
```### Prerequisite
Install mongosh: [https://mongodb.com/docs/mongodb-shell/](https://mongodb.com/docs/mongodb-shell/)
### Run the NLP stack: docker-compose.yml
```sh
#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](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:
```sh
127.0.0.1 mongo
127.0.0.1 mongo2
127.0.0.1 mongo3
```### Run the Bot API stack: docker-compose-bot.yml
```sh
#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.ymlThis docker-compose file starts the NLP stack with the [Open Data Bot](https://github.com/theopenconversationkit/tock-bot-open-data).
* Edit the file [bot-open-data-variables.env](https://github.com/theopenconversationkit/tock-docker/blob/master/bot-open-data-variables.env) and set the required env variables.
You will need a (free) [SNCF Open Data key](https://data.sncf.com/) and
* optionally a Messenger application with "messages" and "messaging_postbacks" webhook events activated - look at the [Facebook documentation](https://developers.facebook.com/docs/messenger-platform/guides/quick-start)
and [Tock Messenger Configuration](https://github.com/theopenconversationkit/tock/tree/master/bot/connector-messenger) instructions.* optionally a Google Assistant project (see https://developers.google.com/actions/sdk/create-a-project ) - sample project file here: [google_actions_fr.json](https://raw.githubusercontent.com/theopenconversationkit/tock-bot-open-data/master/src/main/resources/google_actions_fr.json)
Look at [Tock Google Assistant configuration](https://github.com/theopenconversationkit/tock/tree/master/bot/connector-ga).
```sh
#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:
```sh
#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](https://ngrok.com/)) is required:
```sh
ngrok http 8080
```* Then run the bot
```sh
#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 fileNow you can start to talk to the bot!
## Build images
You will need [Maven](https://maven.apache.org/) and [Git](https://git-scm.com/).
```sh
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 :
```sh
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 :
```sh
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
```sh
PLATFORM=arm64v8/ docker compose up
```### Run Mongo
```sh
./etc/startMongoOnARM
```## Troubleshooting
### RAG - My Open Search cluster / dashboard isn't working
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