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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Docker

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

Q&A

解決済

2回答

5722閲覧

docker attachしても何も表示されずデバッグできない【Rails6】

Kiyobun510

総合スコア12

docker-compose

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Docker

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

0グッド

1クリップ

投稿2020/08/25 08:49

現在dockerを使って開発を行っています。
binding.pryでデバッグをするため、docker attachでコンテナに入るのですが、何も文字が表示されません。webページは思惑通りのタイミングでずっとローディングしているのでbinding.pryは作動していると思われます。
docker attach webapp_app_1 (コンテナ名です)するとそのまま止まってしまい、ターミナルに文字が一切出てこないという状況です。
docker-compose.ymltty: trueなど設定しても変わりません。

logフォルダが空でログが全く出力されていないのですが、これが関係していると思いdevelopment.rbで設定追加しましたが変わりませんでした。ログも相変わらず出力されません。

検索しても同様の症状が見られず、途方に暮れております。
ご回答お待ちしております。

docker-compose.yml

version: '3' services: app: build: context: . env_file: - ./environments/db.env command: bundle exec puma -C config/puma.rb volumes: - .:/webapp - bundle:/bundle - public-data:/webapp/public - tmp-data:/webapp/tmp - log-data:/webapp/log depends_on: - db tty: true stdin_open: true db: image: mysql:5.7 env_file: - ./environments/db.env volumes: - db-data:/var/lib/mysql web: build: context: containers/nginx volumes: - public-data:/webapp/public - tmp-data:/webapp/tmp ports: - 80:80 depends_on: - app volumes: public-data: tmp-data: log-data: db-data: bundle: driver: local

development.rb

Rails.application.configure do config.cache_classes = false config.logger = Logger.new("log/development.log") config.log_level = :debug config.eager_load = false config.consider_all_requests_local = true config.web_console.whitelisted_ips = '0.0.0.0/0' if Rails.root.join('tmp', 'caching-dev.txt').exist? config.action_controller.perform_caching = true config.action_controller.enable_fragment_cache_logging = true config.cache_store = :memory_store config.public_file_server.headers = { 'Cache-Control' => "public, max-age=#{2.days.to_i}" } else config.action_controller.perform_caching = true config.cache_store = :null_store end config.active_storage.service = :local config.action_mailer.raise_delivery_errors = false config.action_mailer.delivery_method = :letter_opener host = 'localhost' # ホスト名 config.action_mailer.default_url_options = { host: host, protocol: 'http' } config.action_mailer.perform_caching = false config.active_support.deprecation = :log config.active_record.migration_error = :page_load config.active_record.verbose_query_logs = true config.assets.debug = true config.assets.quiet = true # config.action_view.raise_on_missing_translations = true config.file_watcher = ActiveSupport::FileUpdateChecker #config.file_watcher = ActiveSupport::EventedFileUpdateChecker end

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

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

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

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

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

yoorwm

2020/08/25 09:10

attachじゃなくて、docker-compose exec app shだとどうなりますか?
Kiyobun510

2020/08/25 14:20 編集

こちらのコマンドを実行した結果、 ``` $ docker-compose exec app sh # ``` となり入力はできるようになったのですが何も表示されません。
guest

回答2

0

ベストアンサー

私の環境だと

$ docker attach $(docker-compose ps -q app)

でアタッチした後に、
Enterなりなんらかのキー入力をするとコンソールで入力を受け付けるようになりますが
そんなことはないですよね...

投稿2020/08/26 03:33

naokit-dev

総合スコア424

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

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

Kiyobun510

2020/08/26 04:50

回答いただきありがとうございます! 普通そうですよね… そちらのコマンドを実行しても動作が止まるだけでキーを押しても何してもコンソールが表示されないのです、、謎すぎます。 再現性の低いバグなのかもしれませんね。
naokit-dev

2020/08/26 04:58

appと同じ仕様のコンテナを用意しておいて、 デバッグ専用に使うようなcomposeも見かけました、 本質的解決ではないですが何かのお役に立ってれば
guest

0

外していたらごめんなさいなんですが、
config.logger = Logger.new("log/development.log") でloggerのログをファイルに出力するように設定しているので、docker attach で接続されたコンソールには何も出力されていないのではないでしょうか?

loggerの設定をコメントアウトすると、表示されるようになるかもしれません。

投稿2020/08/25 09:12

YakumoSaki

総合スコア2027

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

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

Kiyobun510

2020/08/25 14:16 編集

ご回答ありがとうございます。コメントアウトしましたが出力されませんでした。 そもそも最初アプリを立ち上げた時development.logが存在せず、設定してもファイルにもログが出力されないという状況です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問