2017-08-01 6 views
1

mysqlコンテナ内にあるホストからディレクトリをマウントして、mysqlがそのディレクトリにそのログを書き込んで、それらのログにアクセスできるようにします。 ホストディレクトリにmysqlコンテナのログをマウントする

はこのために私は、次のボリューム構成使用しています:

volumes: 
    - ./logs/mysql:/var/log/mysql 

をしかしthisの回答で指摘したように、ホストユーザーとコンテナのユーザーの間で権限の問題があります。解決策は、名前付きボリュームを使用することでしたが、私が望むのは、便利なディレクトリにあるホスト上のログにアクセスすることです。ドッカーの内部ディレクトリ内にない

+1

設定されているエントリポイントスクリプトを実行する前に、あなたはまだsudoの権限で誰からもそれらにアクセスできることを確認します以下の設定

version: '2' services: mysql: image: mysql:latest volumes: - ./logs:/var/log/mysql - ./test.cnf:/etc/mysql/mysql.conf.d/test.cnf environment: MYSQL_ROOT_PASSWORD: root entrypoint: "" command: bash -c "chown -R mysql:mysql /var/log/mysql && exec /entrypoint.sh mysqld" 

とドッキングウィンドウ-構成します。 –

+0

@NigelRen問題は、明示的にアクセス権が与えられていない限り、mysqlはディレクトリにログを書き込みません。 – Ayushya

+0

どのmysql画像を使用していますか? –

答えて

1

だから私は、デフォルトのイメージを実行し、ログファイルが/var/log/mysqlに全く作成されないデフォルトでは、いくつかの観測

  1. を作りました。デフォルトmy.cnf/entrypoint.sh/var/lib/mysqlではなく/var/log/mysql
のアクセス権を変更し /etc/mysql/mysql.conf.d
  • の内側にあなたがこれらの設定を追加し、それらをマッピングするために、独自の設定ファイルを作成する必要が
  • error-log設定コメントしているためですですから、コンテンツ

    [mysqld] 
    log-error = /var/log/mysql/error.log 
    general_log = /var/log/mysql/log_output.log 
    

    と最大以下でtest.cnfファイルを追加し、問題を解決する

    日付は、あなたのこれは、適切なアクセス許可が

  • +0

    これは正しいかもしれませんが、動作させることはできません。空のエントリポイントを使用している場合、docker-compose.ymlファイルは無効で、 'entrypoint'を完全に削除すると、コンテナはエラーコード0で終了します。2番目のケースでは、デフォルトのエントリポイントが使用されているためオーバーライドされていると思います'コマンド'の。 – Ayushya

    +0

    エントリーポイントを試してください: " –

    +0

    エラーコードは0で、エラーもコンテナも存在しません。 – Ayushya

    関連する問題