Install NaBot by docker - MedBot-team/NaBot GitHub Wiki
Install NaBot by docker
-
Install docker-compose
-
Create
.envfile, with this sample
$ cat .env
TOKEN=$MY_TOKEN
MYSQL_DATASETS_ROOT_PASSWORD=$MY_DATASETS_DATABASE_PASSWORD
MYSQL_EVENTS_ROOT_PASSWORD=$MY_EVENTS_DATABASE_PASSWORD
RASA_SERVER_URL=http://rasa:5005/webhooks/rest/webhook
SQL_USER=root
DATASETS_DB_HOST=db_datasets
EVENTS_DB_HOST=db_events
MYSQL_DATASETS_DATABASE=datasets
MYSQL_EVENTS_DATABASE=rasa
DRUG_TABLE=drugs
LAB_TABLE=labs
ACTION_HOST=app
TELEGRAM_ACCESS_TOKEN=$MY_TELEGRAM_TOKEN
TELEGRAM_VERIFY=$MY_TELEGRAM_BOT_ID
TELEGRAM_WEBHOOK_URL=$MY_API_SERVER_URL/webhooks/telegram/webhook
- Create docker-compose file:
$ cat docker-compose.yml
services:
services:
ui:
image: medbot/nabot_ui:latest
depends_on:
rasa:
condition: service_healthy
container_name: ui-server
restart: always
networks:
- frontend-network
volumes:
- ./.env:/streamlit/.env
ports:
- 80:8501
healthcheck:
test: ["CMD", "printf", ".", ">", "/dev/tcp/127.0.0.1/8501"]
interval: 30s
timeout: 10s
retries: 30
rasa:
image: medbot/nabot_chatbot
depends_on:
app:
condition: service_healthy
container_name: chatbot-server
restart: always
expose:
- 5005
ports:
- 5005:5005
healthcheck:
test: ["CMD", "printf", ".", ">", "/dev/tcp/127.0.0.1/5005"]
interval: 45s
timeout: 10s
retries: 30
volumes:
- logs_data:/rasa-server/rasa/logs
- ./.env:/rasa-server/rasa/.env
networks:
- rasa-network
- frontend-network
- events-network
app:
image: medbot/nabot_action
depends_on:
db_datasets:
condition: service_healthy
container_name: action-server
restart: always
volumes:
- logs_data:/action-server/logs
- ./.env:/action-server/.env
networks:
- rasa-network
- datasets-network
expose:
- 5055
healthcheck:
test: ["CMD", "printf", ".", ">", "/dev/tcp/127.0.0.1/5055"]
interval: 45s
timeout: 10s
retries: 30
db_datasets:
image: mysql:8
container_name: datasets-server
command: '--default-authentication-plugin=mysql_native_password'
restart: always
volumes:
- ./datasets-server:/docker-entrypoint-initdb.d
- db-data:/var/lib/mysql
networks:
- datasets-network
env_file:
- ./.env
environment:
- MYSQL_DATABASE=${MYSQL_DATASETS_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_DATASETS_ROOT_PASSWORD}
expose:
- 3306
cap_add:
- SYS_NICE
healthcheck:
test: ["CMD", 'mysqladmin', 'ping', '-h', 'localhost',
'-u', 'root', '-p$MYSQL_ROOT_PASSWORD' ]
interval: 3m30s
timeout: 45s
retries: 30
db_events:
image: mysql:8
container_name: events-server
command: '--default-authentication-plugin=mysql_native_password'
restart: always
volumes:
- ./events-server:/docker-entrypoint-initdb.d
- db-event:/var/lib/mysql
networks:
- events-network
env_file:
- ./.env
environment:
- MYSQL_DATABASE=${MYSQL_EVENTS_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_EVENTS_ROOT_PASSWORD}
expose:
- 3306
cap_add:
- SYS_NICE
healthcheck:
test: ["CMD", 'mysqladmin', 'ping', '-h', 'localhost',
'-u', 'root', '-p$MYSQL_ROOT_PASSWORD' ]
interval: 3m30s
timeout: 45s
retries: 30
networks:
frontend-network:
name: medbot-frontend-network
driver: bridge
rasa-network:
name: medbot-rasa-network
driver: bridge
datasets-network:
name: medbot-datasets-network
driver: bridge
events-network:
name: medbot-events-network
driver: bridge
volumes:
db-data:
name: data_db
db-event:
name: event_db
logs_data:
name: logs_db
- Enjoy your chatbot :wink:
docker-compose -f docker-compose.yml up -d