ユーザーに通知を送信するために private_pub gem (faye を使用) を使用するアプリがあります。問題は、docker と docker-compose を使用してデプロイしようとしていることです (solr 検索や redis など、必要なものがかなりあるため)。すべてが localhost で実行されている限り、すべて問題ありませんでした。しかし今、私のウェブサーバーは、他のすべてのサービスと同様に、docker コンテナーで実行されています。faye のコンテナーを開始しようとしましたが、公開またはサブスクライブが機能しません。
これが私のdocker-composeファイルです:
version: "2"
services:
web:
build: .
command: rails server -e development -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- "3000:3000"
links:
- solr:solr
- mariadb
- redis
depends_on:
- solr
env_file:
- .env
solr:
image: solr
ports:
- "8983:8983"
volumes:
- data:/opt/solr/server/solr/mycores
entrypoint:
- docker-entrypoint.sh
- solr-precreate
- qwerteach
mariadb:
image: mariadb
volumes:
- mariadb:/var/lib/mysql
env_file:
- .env
ports:
- "13306:3306"
redis:
image: redis:latest
ports:
- "6379"
faye:
image: nickjj/faye
links:
- redis
ports:
- "9292:9292"
environment:
FAYE_PUSH_TOKEN: "secret"
FAYE_PORT: 9292
FAYE_MOUNT: "/faye"
FAYE_LOGGING: 1
volumes:
data:
mariadb:
そして私の private_pub.yml
development:
server: "http://faye:9292/faye"
secret_token: "secret"
test:
server: "http://localhost:9292/faye"
secret_token: "secret"
production:
server: "http://example.com/faye"
secret_token: "9eba1078bbb9289f949f51abc7ed5f842fed3af11374056bf09799e4ef2733f2"
signature_expiration: 3600 # one hour
この構成では、「外部」(ダム端末を意味する) から faye に連絡できます:
curl -X POST http://localhost:9292/faye -H 'Content-Type: application/json' -d '{"channel": "/foo", "data": "Hello", "ext": {"pushToken": "secret"}}'
成功しています。Docker Web コンテナーからも機能しますが、アドレスが異なります:
curl -X POST http://faye:9292/faye -H 'Content-Type: application/json' -d '{"channel": "/foo", "data": "Hello", "ext": {"pushToken": "secret"}}'
ただし、private_pub.yml 構成ファイルでは 1 つのアドレスしか許可されていません...したがって、チャネルへのサブスクライブはクライアントに対して機能しますが、コントローラーからは発行できません。または、コントローラーからは発行できますが、ユーザーはサブスクライブできません。どうすればこれを解決できますか?
どんな助けでも大歓迎です!:-)