質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

解決済

1回答

3769閲覧

Redisのコンテナに接続ができない

oeiqgfodgfhps

総合スコア35

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2021/07/23 09:49

現在EC2上でDockerコンテナを立ててアプリケーションをデプロイしようとしています。
EC2上のコンテナには、キャッシュ用のREDISコンテナと、アプリケーション用のrailsのコンテナ、そしてpumaのコンテナを置いています。
しかし、アプリのコードでREDIS関係の処理を走らせようとした時、以下のようなエラーが出てしまい、REDISに接続できません。
Redis::CannotConnectError (Error connecting to Redis on redis://127.0.0.1:6379:6379 (SocketError)):
おそらく、rails側の設定で接続がうまくいっていないものだと思いますが、どこを修正すればいいのか検討もつきません。。どなたかご助言お願いいたします。
下記にdocker-compose.ymlとrailsのredis関係のファイルを記述します。

docker-compose.yml

version: '3' services: app: build: context: . entrypoint: bundle exec puma -C config/puma.rb -e production volumes: - .:/saving - public-data:/saving/public - tmp-data:/saving/tmp - log-data:/saving/log networks: - saving-network redis: image: redis:5.0.5 ports: - 6379:6379 volumes: - ./redis:/data command: redis-server --appendonly yes web: build: context: ./nginx_docker volumes: - public-data:/saving/public - tmp-data:/saving/tmp ports: - 80:80 depends_on: - app - redis environment: REDIS_HOST: redis REDIS_PORT: 6379 networks: - saving-network volumes: public-data: tmp-data: log-data: db-data: networks: saving-network: external: true

config/initializers/redis.rb

redis.rb

1require 'redis-rails' 2 3REDIS = Redis.new(host: ENV["REDIS_HOST"], port: ENV["REDIS_PORT"])

ちなみにREDISの起動自体はREDISのコンテナに入り、redis-cliで動作確認しているため、問題ないと思われます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コメント欄だとインデントがずれるのでこちらで
volumesとnetworkは外してます。
volumesは起動に必須なもののみを足して、これで起動してみるとどうでしょう?

version: '3' services: app: build: context: . entrypoint: bundle exec puma -C config/puma.rb -e production links: - redis environment: REDIS_HOST: redis REDIS_PORT: 6379 redis: image: redis:5.0.5 ports: - 6379:6379 command: redis-server --appendonly yes web: build: context: ./nginx_docker ports: - 80:80 depends_on: - app - redis links: - app environment: REDIS_HOST: redis REDIS_PORT: 6379

投稿2021/07/23 21:29

編集2021/07/24 06:12
Noin

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oeiqgfodgfhps

2021/07/24 05:31

appにもenvironmentを足してみましたが、状況は変わりませんでした。。
Noin

2021/07/24 05:34

エラーはこちらから変わりませんか?? Redis::CannotConnectError (Error connecting to Redis on redis://127.0.0.1:6379:6379 (SocketError)): REDIS = Redis.new(host: ENV["REDIS_HOST"], port: ENV["REDIS_PORT"]) 何故かportが繋がってるのですが、どこかで結合してませんか?
Noin

2021/07/24 05:37

REDIS = Redis.new(host: "127.0.0.1", port: 6379, db: 0) これだと接続できますか?
oeiqgfodgfhps

2021/07/24 05:50

エラー内容は変わってないです。 REDIS = Redis.new(host: "127.0.0.1", port: 6379, db: 0)で接続を試みましたが、エラー内容は変わらず出力されていました。
Noin

2021/07/24 05:52

大変申し訳ないです。こちらでした。(localhostにredisは存在しないですね) REDIS = Redis.new(host: "redis", port: 6379, db: 0)
oeiqgfodgfhps

2021/07/24 05:57

上記のように変更しましたが、変わらずでした。しかしdocker-compose upコマンドの実行の際に下記のような文言が出力されていました。(関係ないかもしれませんが、、) redis_1 | 1:C 24 Jul 2021 05:54:54.862 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo redis_1 | 1:C 24 Jul 2021 05:54:54.864 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=1, just started redis_1 | 1:C 24 Jul 2021 05:54:54.864 # Configuration loaded redis_1 | 1:M 24 Jul 2021 05:54:54.865 # You requested maxclients of 10000 requiring at least 10032 max file descriptors. redis_1 | 1:M 24 Jul 2021 05:54:54.866 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted. redis_1 | 1:M 24 Jul 2021 05:54:54.866 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'. redis_1 | 1:M 24 Jul 2021 05:54:54.867 * Running mode=standalone, port=6379. redis_1 | 1:M 24 Jul 2021 05:54:54.867 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. redis_1 | 1:M 24 Jul 2021 05:54:54.867 # Server initialized redis_1 | 1:M 24 Jul 2021 05:54:54.869 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. redis_1 | 1:M 24 Jul 2021 05:54:54.900 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. redis_1 | 1:M 24 Jul 2021 05:54:54.900 * Ready to accept connections
Noin

2021/07/24 06:01

設定が色々足りてないようですが、起動はしてるように見えますね。 見落としてましたが、redisにnetworksが存在してないですね。
oeiqgfodgfhps

2021/07/24 06:14

networksの追加で動くようになりました!ありがとうございます! 編集していただいたようにdocker-compose.ymlは修正した方がいいのでしょうか??
Noin

2021/07/24 06:18

あー、いえ、必要ないです。 もしnetworks足してできないのであれば、docker-compose内で解決した方が良さそうに見えたので 最も簡単な表記にしたものです。 お使いの設定は外部のルーターを使うので、それを切り分けたかったものですね。 試しにやってみるのはありだと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問