From 056dc23c8b696ce63892c7b7781f26d271642ddf Mon Sep 17 00:00:00 2001 From: or-else Date: Wed, 18 Apr 2018 17:55:16 -0700 Subject: [PATCH] more work on docker --- chatbot/README.md | 20 +++++++++++--------- docker-build.sh | 2 ++ docker/chatbot/Dockerfile | 22 ++++++++++++++-------- docker/tinode/Dockerfile | 3 ++- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/chatbot/README.md b/chatbot/README.md index bb0a2b7eb..14d3fc202 100644 --- a/chatbot/README.md +++ b/chatbot/README.md @@ -14,24 +14,26 @@ python -m grpc_tools.protoc -I../pbx --python_out=. --grpc_python_out=. ../pbx/m ### Using Docker -1. Follow [instructions](../docker/README.md) to build and run dockerized Tinode chat server up to an including _step 5_. +**Warning!** The chatbot image is almost 750MB: the basic Python 3 docker image is nearly 690MB, gRPC adds another 60MB. + +1. Follow [instructions](../docker/README.md) to build and run dockerized Tinode chat server up to an including _step 3_. -2. In _step 6_ run the server adding `--env PLUGIN_PYTHON_CHAT_BOT_ENABLED=true` and `--volume botdata:/botdata` to the command line: +2. In _step 4_ run the server adding `--env PLUGIN_PYTHON_CHAT_BOT_ENABLED=true` and `--volume botdata:/botdata` to the command line: + 1. **RethinkDB**: ``` - $ docker run -p 6060:18080 -d --name tinode-srv --env PLUGIN_PYTHON_CHAT_BOT_ENABLED=true --volume botdata:/botdata --network tinode-net tinode-srv + $ docker run -p 6060:18080 -d --name tinode-srv --env PLUGIN_PYTHON_CHAT_BOT_ENABLED=true --volume botdata:/botdata --network tinode-net tinode/tinode-rethink:latest ``` - -3. If the current folder is `chat/chatbot`, then the Dockerfile is located in `chat/docker/chatbot` folder; `cd ../docker` and build the chat bot image + 1. **MySQL**: ``` - $ docker build --tag=tinode-bot chatbot + $ docker run -p 6060:18080 -d --name tinode-srv --env PLUGIN_PYTHON_CHAT_BOT_ENABLED=true --volume botdata:/botdata --network tinode-net tinode/tinode-mysql:latest ``` -4. Run the chatbot +3. Run the chatbot ``` - $ docker run -d --name tinode-bot --network tinode-net --volume botdata:/botdata tinode-bot + $ docker run -d --name tino-chatbot --network tinode-net --volume botdata:/botdata tinode/chatbot:latest ``` -5. Test that the bot is functional by pointing your browser to [http://localhost:6060/x/](http://localhost:6060/x/), login and talk to user `Tino`. The user should respond to every message with a random quote. +4. Test that the bot is functional by pointing your browser to http://localhost:6060/x/, login and talk to user `Tino`. The user should respond to every message with a random quote. ### Building from Source diff --git a/docker-build.sh b/docker-build.sh index 5e9f033e5..90c5a8448 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -17,9 +17,11 @@ fi ver=( ${tag//./ } ) # Remove earlier builds +docker rmi tinode-rethinkdb docker rmi tinode/tinode-rethinkdb:latest docker rmi tinode/tinode-rethinkdb:"${ver[0]}.${ver[1]}.${ver[2]}" docker rmi tinode/tinode-rethinkdb:"${ver[0]}.${ver[1]}" +docker rmi tinode-mysql docker rmi tinode/tinode-mysql:latest docker rmi tinode/tinode-mysql:"${ver[0]}.${ver[1]}.${ver[2]}" docker rmi tinode/tinode-mysql:"${ver[0]}.${ver[1]}" diff --git a/docker/chatbot/Dockerfile b/docker/chatbot/Dockerfile index e3cd00710..3ac3690f8 100644 --- a/docker/chatbot/Dockerfile +++ b/docker/chatbot/Dockerfile @@ -1,24 +1,30 @@ +# Dockerfile builds an image with a chatbot (Tino) for Tinode. + FROM python:3 +ARG VERSION=0.14.4 +ENV VERSION=$VERSION + LABEL maintainer="Gene Sokolov " LABEL name="TinodeChatbot" -LABEL version="0.14.1" +LABEL version=$VERSION RUN mkdir -p /usr/src/bot WORKDIR /usr/src/bot -COPY requirements.txt ./ +COPY requirements.txt . -RUN pip install --no-cache-dir -r requirements.txt +RUN pip install --no-cache-dir -q -r requirements.txt -ADD https://raw.githubusercontent.com/tinode/chat/master/chatbot/chatbot.py /usr/src/bot -ADD https://raw.githubusercontent.com/tinode/chat/master/chatbot/quotes.txt /usr/src/bot -ADD https://raw.githubusercontent.com/tinode/chat/master/pbx/model_pb2.py /usr/src/bot -ADD https://raw.githubusercontent.com/tinode/chat/master/pbx/model_pb2_grpc.py /usr/src/bot +# Get tarball with the chatbot code and data. +ADD https://github.com/tinode/chat/releases/download/v$VERSION/chatbot.tar.gz . +# Unpack chatbot, delete archive +RUN tar -xzf chatbot.tar.gz \ + && rm chatbot.tar.gz # Use command line parameter `-e LOGIN_AS=user:password` to login as someone other than Tino. -ENTRYPOINT python chatbot.py --login-basic=${LOGIN_AS} --login-cookie=/botdata/.tn-cookie --host=tinode-srv:16061 > log.txt +ENTRYPOINT python chatbot.py --login-basic=${LOGIN_AS} --login-cookie=/botdata/.tn-cookie --host=tinode-srv:16061 > /var/log/chatbot.log # Plugin port EXPOSE 40051 diff --git a/docker/tinode/Dockerfile b/docker/tinode/Dockerfile index a9cc09b15..57039f7d4 100644 --- a/docker/tinode/Dockerfile +++ b/docker/tinode/Dockerfile @@ -43,7 +43,8 @@ WORKDIR /opt/tinode ADD https://github.com/tinode/chat/releases/download/v$VERSION/tinode-$TARGET_DB.linux-amd64.tar.gz . -RUN tar -xzf tinode-$TARGET_DB.linux-amd64.tar.gz +RUN tar -xzf tinode-$TARGET_DB.linux-amd64.tar.gz \ + && rm tinode-$TARGET_DB.linux-amd64.tar.gz # Copy config template to the container. COPY config.template .