Problem with Docker and Duckling

Hi, I’m trying to run Rasa by Docker

This is my docker-compose.yml

version: '3.0'
services:
  rasa:
    image: rasa/rasa:1.2.4-full
    ports:
      - 5005:5005
    volumes:
      - ./:/app
    command:
      - run
  action_server:
    image: rasa/rasa-sdk:1.2.0
    volumes:
      - ./actions:/app/actions
  duckling:
    image: rasa/duckling:latest
    ports:
      - 8000:8000

My containers:

STATUS                      PORTS                    NAMES
Up 2 minutes                0.0.0.0:8000->8000/tcp   rasa-comarch-v5_duckling_1
Up 2 minutes                5055/tcp                 rasa-comarch-v5_action_server_1
Up 2 minutes                0.0.0.0:5005->5005/tcp   rasa-comarch-v5_rasa_1

------------

Starting rasa-comarch-v5_action_server_1 ... done
Starting rasa-comarch-v5_rasa_1          ... done
Creating rasa-comarch-v5_duckling_1      ... done
Attaching to rasa-comarch-v5_action_server_1, rasa-comarch-v5_rasa_1, rasa-comarch-v5_duckling_1
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.endpoint  - Starting action endpoint server...
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.executor  - Registered function for 'action_assign_birth_date'.
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.executor  - Registered function for 'action_email_wrong'.
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.executor  - Registered function for 'action_assign_email'.
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.executor  - Registered function for 'action_send_data'.
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.executor  - Registered function for 'action_chat_restart'.
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.executor  - Registered function for 'register_form'.
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.executor  - Registered function for 'change_password_form'.
action_server_1  | 2019-08-28 07:44:47 INFO     rasa_sdk.endpoint  - Action endpoint is up and running. on ('0.0.0.0', 5055)
duckling_1       | no port specified, defaulting to port 8000
duckling_1       | Listening on http://0.0.0.0:8000
rasa_1           | 2019-08-28 07:44:49 INFO     root  - Starting Rasa server on http://localhost:5005
rasa_1           | 2019-08-28 07:45:04 WARNING  root  - Could not parse timestamp 7464a8e72f514f7cb2db79e47162fb3a. Instead current UTC time will be passed to duckling. Error: invalid literal for int() with base 10: '7464a8e72f514f7cb2db79e47162fb3a'
rasa_1           | 2019-08-28 07:45:04 ERROR    rasa.nlu.extractors.duckling_http_extractor  - Failed to connect to duckling http server. Make sure the duckling server is running and the proper host and port are set in the configuration. More information on how to run the server can be found on github: https://github.com/facebook/duckling#quickstart Error: HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /parse (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f04443e2898>: Failed to establish a new connection: [Errno 111] Connection refused',))

After I send first message I’m getting this error:

rasa_1 | 2019-08-28 07:45:04 ERROR rasa.nlu.extractors.duckling_http_extractor - Failed to connect to duckling http server. Make sure the duckling server is running and the proper host and port are set in the configuration. More information on how to run the server can be found on github: https://github.com/facebook/duckling#quickstart Error: HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /parse (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f04443e2898>: Failed to establish a new connection: [Errno 111] Connection refused',))

When I run rasa by rasa run actions and rasa run --enable-api everything works fine.

Thanks in advance for your help

I solved this. It is necessary to change localhost to docker containers names

example:

config.yml

- name: DucklingHTTPExtractor
    url: http://duckling:8000

endpoints.yml

action_endpoint:
  url: http://action_server:5055/webhook
1 Like

I changed the config.yml to

- name: DucklingHTTPExtractor url: http://duckling:8000

but for me the error still remained. I figured out that the new config.yml settings get only used when you retrain the model, since while training the model, the config.yml is saved as part of the model.