実現したいこと前提
デバッグを行いたくて、binding.pryをしたいのですが、そもそもログが表示されないというか、
docker-compose up
を実行したら
db_1 | 2021-06-06T14:40:20.431104Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. db_1 | 2021-06-06T14:40:20.436585Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. db_1 | 2021-06-06T14:40:20.585465Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.21' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. web_1 | => Booting Puma web_1 | => Rails 6.1.3.1 application starting in development web_1 | => Run `bin/rails server --help` for more startup options web_1 | Puma starting in single mode... web_1 | * Version 3.12.6 (ruby 2.6.5-p114), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop
表示がここまでで、そこからいくらlocalhost:3000で色々な操作をしても
操作ログがターミナルに出力されませんでした。
MySQL5.7コンテナを用いてた頃はしっかりと操作ログが出力されていましたが、8.0に変えたら
https://selfnote.work/20210315/programming/mysql-docker-error-mbind/
このような問題が発生したので、この記事のように対処したらうまくいきましたが、
mbind: Operation not permitted
の表示が消えるのみで、操作ログが出力されません
【追記】この記事を参考にして
https://qiita.com/hb5kz/items/7c9d266480079910de5c
デタッチドモードで起動して、
docker attach coffee_passport_web_1
を入力しても反応なしで、何も出力されません
エンター押しても出力されませんでした。
またこの記事を
該当のソースコード
docker-compose.yml
version: '3' services: db: image: mysql:8.0.21 cap_add: - SYS_NICE # コンテナにLinux機能を追加するオプションのようです。SYS_NICEは、プロセスの優先度(nice値)をあげます。 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_HOST: db ports: - '3306:3306' volumes: - mysql-data:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password # 認証方式を8系以前のものにする web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" stdin_open: true tty: true # この2文を追加でコンテナ内の標準入出力をローカルマシンのターミナルにアタッチする準備が整います。 volumes: - .:/coffee_passport ports: - "3000:3000" depends_on: - db environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} RAILS_MASTER_KEY: ${RAILS_MASTER_KEY} SENDGRID_API_KEY: ${SENDGRID_API_KEY} ADMIN_USER_PASSWORD: ${ADMIN_USER_PASSWORD} AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} GOOGLE_USER_NAME: ${GOOGLE_USER_NAME} GOOGLE_PASSWORD: ${GOOGLE_PASSWORD} SENDGRID_USER_NAME: ${SENDGRID_USER_NAME} SENDGRID_PASSWORD: ${SENDGRID_PASSWORD} PAYJP_SECRET_KEY: ${PAYJP_SECRET_KEY} PAYJP_PUBLIC_KEY: ${PAYJP_PUBLIC_KEY} MYSQL_HOST: db # selenium_chrome を使うために以下の行を追加 SELENIUM_DRIVER_URL: http://selenium_chrome:4444/wd/hub" selenium_chrome: image: selenium/standalone-chrome-debug logging: driver: none volumes: mysql-data: driver: local vendor_bundle: driver: local
8.0で環境構築してる人たちはみんなこのようなコードでした
Dockerfile
FROM ruby:2.6.5 ## nodejsとyarnはwebpackをインストールする際に必要 # yarnパッケージ管理ツールをインストール RUN curl http://deb.debian.org/debian/dists/buster/main/binary-amd64/by-hash/SHA256/935deda18d5bdc25fb1813d0ec99b6e0e32a084b203e518af0cf7dc79ee8ebda | head RUN apt-get update && apt-get install -y curl apt-transport-https wget && \ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \ apt-get update && apt-get install -y yarn # chromeの追加 RUN apt-get update && apt-get install -y unzip && \ CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \ wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/ && \ unzip ~/chromedriver_linux64.zip -d ~/ && \ rm ~/chromedriver_linux64.zip && \ chown root:root ~/chromedriver && \ chmod 755 ~/chromedriver && \ mv ~/chromedriver /usr/bin/chromedriver && \ sh -c 'wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' && \ sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' && \ apt-get update && apt-get install -y google-chrome-stable RUN /bin/sh -c /bin/sh -c bundle update --bundler RUN gem install bundler:2.1.4 RUN mkdir /coffee_passport WORKDIR /coffee_passport COPY Gemfile /coffee_passport/Gemfile COPY Gemfile.lock /coffee_passport/Gemfile.lock RUN bundle update rails RUN bundle update RUN bundle update mimemagic RUN bundle update capybara selenium-webdriver #RUN bundle update nokogiri marcel mimemagic RUN bundle install COPY . /coffee_passport RUN yarn install --check-files RUN bundle exec rails webpacker:compile # Add a script to be executed every time the container starts. COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"]
試したこと
config/environments/development.rb
に
config.logger = Logger.new(STDOUT)
を記述し、
docker-compose downの後にupし直しても
操作ログは出力されず。
docker inspect coffee_passport_db_1
を出力し
"Volumes": { "/var/lib/mysql": {} },
このようなvolumeの表示が見られたのですが、もしかしたら本来はこのような表示にならない可能性もあるかもしれません。
docker exec coffee_passport_web_1 bash
でコンテナの中に入って
development.logを見たら、しっかりと操作ログが記録されていました。
サーバーエラーログ
サーバーコンテナを使用して MySQL Server を初めて起動したときに、次のいずれかの条件に該当する場合、server error log は生成されません:
-
ホストからのサーバー構成ファイルがマウントされていますが、ファイルにシステム変数 log_error が含まれていません (サーバー構成ファイルのバインドおよびマウントに関する データおよび構成の変更の永続化 を参照)。
-
ホストからのサーバー構成ファイルはマウントされていませんが、Docker 環境変数 MYSQL_LOG_CONSOLE は true (MySQL 8.0 サーバーコンテナの変数のデフォルト状態) です。 その後、MySQL Server エラーログは stderr にリダイレクトされるため、エラーログは Docker コンテナログに記録され、docker logs mysqld-container コマンドを使用して表示できます。
いずれかの条件に該当する場合に MySQL Server でエラーログを生成するには、configure the server の --log-error オプションを使用して、コンテナ内の特定の場所にエラーログを生成します。 エラーログを永続化するには、データおよび構成の変更の永続化 の説明に従って、コンテナ内のエラーログの場所にホストファイルをマウントします。 ただし、コンテナ内の MySQL Server に、マウントされたホストファイルへの書込みアクセス権があることを確認する必要があります。
と言った記事を見つけました。が具体的にどうすれば良いのかわかりませんでした。
docker logs -f coffee_passport_web_1
と入力しても、当然
web_1 | Use Ctrl-C to stop
までしか出力されません。
volumeの設定が間違ってると思うのですが、どのように設定すれば良いか分かりません。
ご教授いただければ幸いです。
環境
macOS,ruby 2.6.5p114 ,Rails 6.1.3.1,Docker version 20.10.5,
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。