Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何对Ruby on Rails应用程序的俚语进行dockerize_Ruby On Rails_Docker_Docker Compose_Pusher - Fatal编程技术网

Ruby on rails 如何对Ruby on Rails应用程序的俚语进行dockerize

Ruby on rails 如何对Ruby on Rails应用程序的俚语进行dockerize,ruby-on-rails,docker,docker-compose,pusher,Ruby On Rails,Docker,Docker Compose,Pusher,是用Ruby编写的Pusher协议的开源服务器实现 根据Slanger项目README.md,Slanger不是设计用于在轨道内运行的 它不是为在Rails或sinatra应用程序中运行而设计的 将其与RubyonRails应用程序一起进行dockerize将是一个很好的设计。实现这一点的步骤是什么?您可以在下面的步骤中找到详细信息。供您参考,所有代码都可以在上找到 配置Redis容器 诽谤。因此,首先,您需要一个Redis容器来并行运行 在docker-compose.yml中,添加(作为示例

是用Ruby编写的Pusher协议的开源服务器实现

根据Slanger项目README.md,Slanger不是设计用于在轨道内运行的

它不是为在Rails或sinatra应用程序中运行而设计的


将其与RubyonRails应用程序一起进行dockerize将是一个很好的设计。实现这一点的步骤是什么?

您可以在下面的步骤中找到详细信息。供您参考,所有代码都可以在上找到

配置Redis容器 诽谤。因此,首先,您需要一个Redis容器来并行运行

在docker-compose.yml中,添加(作为示例):

诽谤 为俚语添加Dockerfile(例如Dockerfile俚语)

FROM ruby:2.3.3
RUN gem install slanger
CMD slanger --app_key $APPKEY --secret $APPSECRET -r redis://$REDIS_HOST:$REDIS_PORT/$REDIS_DB
更新docker-compose.yml

slanger:
  build:
    context: .
    dockerfile: Dockerfile-slanger
  depends_on:
    - redis
  ports:
    - "8080:8080"
  env_file:
    - .env.slanger
环境文件.env.slanger如下所示:

APPKEY=application_key
APPSECRET=the_secret_for_the_application
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB=Slanger
另外,在docker-compose.yml中,将俚语添加到Rails应用程序的依赖项列表中:

web:
  build: .
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  volumes:
    - .:/myapp
  ports:
    - "3000:3000"
  depends_on:
    - db
    - slanger
  env_file:
    - .env
用推手和诽谤者说话 现在您需要将推送器gem添加到您的gem文件中

gem 'pusher'
接下来,您需要通过添加config/initializers/pusher.rb文件在Rails应用程序中配置Slanger

Pusher.app_id='application_id'
Pusher.key='application_key'
Pusher.secret='the_secret_for_the_application'
Pusher.host='slanger'
Pusher.port=4567
Pusher.logger=Rails.logger
就这样。现在,您可以使用Rails中的Pusher通过Slanger API端口将消息发布到Slanger服务器的一个频道,还可以使用JavaScript中的Pusher通过WebSocket订阅Slanger服务器的频道。请查看下面的示例

轨道

试验 现在打开订阅服务器URL:

http://localhost:3000/message/subscribe
并发布一条消息:

http://localhost:3000/message/publish/Slanger%20is%20cool
然后在订阅服务器的浏览器控制台中,您将看到:

Pusher : Event recd : {"event":"AN_EVENT","data":{"message":"Slanger is cool"},"channel":"MY_CHANNEL"}
data:  {message: "Slanger is cool"}
希望能有帮助

顺便说一下,如果您想了解如何使用docker compose对Rails应用程序进行docker化,请参阅

docker-compose build
docker-compose up

$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
9e3996f55e7c        helloslanger_web       "bundle exec rails..."   13 seconds ago      Up 10 seconds       0.0.0.0:3000->3000/tcp   helloslanger_web_1
24c8b05f22a5        helloslanger_slanger   "/bin/sh -c 'slang..."   About an hour ago   Up 13 seconds       0.0.0.0:8080->8080/tcp   helloslanger_slanger_1
6baa9eec8c5a        redis:4.0-alpine       "docker-entrypoint..."   4 days ago          Up 14 seconds       6379/tcp                 helloslanger_redis_1
46bc3498a5bf        postgres               "docker-entrypoint..."   4 days ago          Up 14 seconds       5432/tcp                 helloslanger_db_1
http://localhost:3000/message/subscribe
http://localhost:3000/message/publish/Slanger%20is%20cool
Pusher : Event recd : {"event":"AN_EVENT","data":{"message":"Slanger is cool"},"channel":"MY_CHANNEL"}
data:  {message: "Slanger is cool"}