🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

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

Ruby on Rails

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

デバッグ

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

Docker

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

Q&A

解決済

1回答

3990閲覧

dockerでRailsファイルのデバッグをしたいので、ログをターミナルに自動表示させたいができない。

zyno

総合スコア41

unicorn

Unicornは、汎用のRackアプリケーションサーバ。RackとWebサーバーの機能を併せ持ちます。レスポンス処理や、Nginx単体がRackの機能をサポートしていない事から、一般的にはNginx+Unicorn+Railsの構成を取って用います。

docker-compose

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

Ruby on Rails

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

デバッグ

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

Docker

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

0グッド

0クリップ

投稿2020/08/16 05:22

編集2020/08/16 05:44

前提・実現したいこと

Docker下でRailsファイルのデバッグをしたいのでログを自動表示させたいです。

発生している問題・エラーメッセージ

イメージ説明
ここで、app_1のログを表示させ、putやbinding.pryなどをしたいができない。

該当のソースコード

RAILS_ROOT │ . . . ├── docker │ ├── gitignore │ ├── mysql │ │ ├── Dockerfile │ │ ├── charset.cnf │ │ └── password.yml │ ├── nginx │ │ ├── Dockerfile │ │ ├── default.conf │ │ └── nginx.conf │ └── rails │ ├── Dockerfile │ └── unicorn.rb ├── docker-compose.yml

docker/mysql/Dockerfile

FROM mysql:5.7 RUN apt-get update && \ apt-get install -y apt-utils \ locales && \ rm -rf /var/lib/apt/lists/* && \ echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && \ locale-gen ja_JP.UTF-8 ENV LC_ALL ja_JP.UTF-8 ADD ./docker/mysql/charset.cnf /etc/mysql/conf.d/charset.cnf

docker/nginx/Dockerfile

dockerfile

1FROM nginx:1.16 2RUN apt-get update && \ 3 apt-get install -y apt-utils \ 4 locales && \ 5 echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen && \ 6 locale-gen ja_JP.UTF-8 7ENV LC_ALL ja_JP.UTF-8 8ADD ./docker/nginx/nginx.conf /etc/nginx/nginx.conf 9ADD ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf 10

docker/rails/Dockerfile

dockerfile

1FROM ruby:2.6.3 2RUN apt-get update -qq && \ 3 apt-get install -y apt-utils \ 4 build-essential \ 5 libpq-dev \ 6 nodejs \ 7 default-mysql-client 8RUN mkdir /app 9WORKDIR /app 10ADD Gemfile /app/Gemfile 11ADD Gemfile.lock /app/Gemfile.lock 12RUN bundle install -j4 13ADD . /app 14 15EXPOSE 3000 16

docker/rails/unicorn.rb

worker_processes 8 pid "/var/run/unicorn.pid" listen "/var/tmp/unicorn.sock" stdout_path "./log/unicorn.stdout.log" stderr_path "./log/unicorn.stderr.log"

docker

1version: "2" 2services: 3 app: 4 build: 5 context: . 6 dockerfile: ./docker/rails/Dockerfile 7 command: bundle exec unicorn -p 3000 -c /app/config/unicorn.rb 8 tty: true 9 stdin_open: true 10 ports: 11 - "3000:3000" 12 volumes: 13 - /var/tmp 14 - .:/app 15 depends_on: 16 - db 17 extends: 18 file: ./docker/mysql/password.yml 19 service: password 20 stdin_open: true 21 tty: true 22 23 db: 24 build: 25 context: . 26 dockerfile: ./docker/mysql/Dockerfile 27 ports: 28 - "3306:3306" 29 volumes: 30 - db_data:/var/lib/mysql 31 extends: 32 file: ./docker/mysql/password.yml 33 service: password 34 35 nginx: 36 build: 37 context: . 38 dockerfile: ./docker/nginx/Dockerfile 39 ports: 40 - "80:80" 41 volumes_from: 42 - app 43 44volumes: 45 db_data: 46

試したこと

1. logが存在するかどうか
→log/development.logにはログが存在する。しかしそのログはターミナルに出力されない

2. stdin_open: truetty: trueをdocker-compose.ymlのappに設置する
→ターミナルにログが出力されない
https://budougumi0617.github.io/2017/09/02/debug-rails-on-docker/

3. docker exec -it コンテナ名 bashを行えばログが出力されるとのことなので実行する
→ターミナルにログが出力されない

**4. docker/rails/unicorn.rbで定義しているstdout_path "./log/unicorn.stdout.log"**の場所を見る
→/log/unicorn.stdout.logにはログが存在する。デバッガを仕込んだらデバッガもログに存在する。しかしそのログはターミナルに出力されない

5. config.logger = Logger.new(STDOUT)をconfig/developments/development.rbに記載
→ターミナルにログが出力されない

ご回答頂けると幸いです。よろしくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

これは Docker ではなく RubyGem の unicorn または unicorn-rails
logger が標準出力ではないことが原因のようです

次の参考のいずれかの例のように、Rails 内のどこかで logger を標準出力に向けて再定義する必要があるようです

参考:

ruby

1config.logger = Logger.new(STDOUT)

投稿2020/08/16 07:40

y_shinoda

総合スコア3272

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問