Я пытаюсь подключить Hubot к Rocketchat с помощью Docker. Мои команды:

docker run -it -e ROCKETCHAT_URL=<your rocketchat instance>:<port> \
               -e ROCKETCHAT_ROOM='' \
               -e LISTEN_ON_ALL_PUBLIC=true \
               -e ROCKETCHAT_USER=bot \
               -e ROCKETCHAT_PASSWORD=bot \
               -e ROCKETCHAT_AUTH=password \
               -e BOT_NAME=bot \
               -e EXTERNAL_SCRIPTS=hubot-pugme,hubot-help \
                rocketchat/hubot-rocketchat

Я ввел: U: \ myhubot> docker run -it -e ROCKETCHAT_URL = https://spree.chat/ канал /: 3000

Но Docker говорит: docker: Ошибка синтаксического анализа ссылки: "\" не является допустимым репозиторием / тегом: недопустимый формат ссылки.

Я проверил версию Docker, и это правильно. Это единственное решение в веб-браузере. Какое решение для этого?

Снимок экрана:

Docker Error

1
Padma Channal 20 Июн 2017 в 17:45
Цитировали ли вы "spree.chat/channel/:3000"?
 – 
Miguel Marques
20 Июн 2017 в 17:51
Я просто пробовал с цитатами. Ошибка остается прежней.
 – 
Padma Channal
20 Июн 2017 в 17:55

3 ответа

Текст команды в вашем вопросе состоит из нескольких строк, с использованием символа \, чтобы перейти к следующей строке и добавить больше к команде.

Во-первых, это соглашение Unix, но вы используете Windows. В Windows \ - это символ-разделитель каталогов, а не символ продолжения строки. В Windows, чтобы перейти к следующей строке, я полагаю, вы используете вместо этого ^.

Во-вторых, на скриншоте кажется, что в команде используется \, но все это одна строка. Команда продолжается в той же строке после нее. Итак, Docker видит \ там, где он ожидает найти имя изображения, и пытается использовать его в этом качестве. Но это неверно, поэтому он жалуется и говорит вам об этом.

Если вы будете использовать эту команду в одной строке, просто удалите символы \.

Если вы будете использовать это в нескольких строках, я считаю, что вам следует использовать вместо этого ^, как показано в этом ответе .

См. Также ответ jdno, который представляет собой другую проблему, с которой вы, вероятно, столкнетесь после того, как исправите ее.

2
Dan Lowe 20 Июн 2017 в 18:21

Правильный формат URL-адреса - protocol://domain:port/path/filename, поэтому URL-адрес должен быть https://spree.chat. : 3000 / канал /. Докер не ожидает :3000 и, следовательно, не может проанализировать команду.

Глядя на документацию для Rocket.Chat Hubot Adapter, мне кажется, что вам нужен только указать host:port, т.е. https://spree.chat:3000. Но это только предположение ...

1
jdno 20 Июн 2017 в 18:04
Я не думаю, что это на самом деле вызывает указанную ошибку, касающуюся конкретно \. Однако, взглянув на документы rocketchat, я думаю, что ваше наблюдение верное, и OP может столкнуться с этой ошибкой в ​​более поздний момент.
 – 
Dan Lowe
20 Июн 2017 в 18:15
Да, я согласен с тобой. Я не уделил достаточно внимания снимку экрана, чтобы заметить, что OP использует Windows и выполняет команду в одной строке. Хорошая работа, поймав это.
 – 
jdno
20 Июн 2017 в 18:19

Команда выполнена в стиле unix, где \ представляет команду, продолжающуюся в следующей строке.

Поскольку вы используете платформу Windows, используйте всю команду в одной строке, т.е. удалите \ и объедините все строки в одну строку.

Попробуйте ниже:

docker run -it -e ROCKETCHAT_URL="<your rocketchat instance>:<port>" -e ROCKETCHAT_ROOM="" -e LISTEN_ON_ALL_PUBLIC=true -e ROCKETCHAT_USER=bot -e ROCKETCHAT_PASSWORD=bot -e ROCKETCHAT_AUTH=password -e BOT_NAME=bot -e EXTERNAL_SCRIPTS="hubot-pugme,hubot-help" rocketchat/hubot-rocketchat
0
Rao 21 Июн 2017 в 16:55