私はDockerとrichtを使い始めたばかりで、最初のdockerized Apache 2 / PHP環境をセットアップする方法を見つけようとしています。これまで、完全なLinux VMを使用してきました。/var/log/apache2に書き込まれるログファイルを使用し、「logrotate」を使用して毎日新しいファイルにホップしました。
ログファイルは、主に即時エラー検出(つまり、サーバーにログオンし、lessを使用して現在のaccess.logおよびerror.logファイルを開く)およびfail2banに使用されました。
私が正しいなら、それはDocker環境では実用的ではありません-主にあなたは通常ログを見るためにコンテナにログインできないからです。コンテナが削除されると、ログも失われます。
だから:そのような状況でaccess.log / error.logを操作/エミュレート/置換する最も一般的な方法は何ですか?実稼働環境と開発環境の両方に共通するソリューションは何ですか?
これまでの私のアイデアには、NFS共有(低速で注意しないとファイル名の衝突が発生する可能性があります)、およびlogstash(努力する価値があり、小規模なサイトや開発環境でも実用的かどうかわかりませんか?)より良い解決策を考え出しましたか?
違いがあるかどうかはわかりませんが、現在はDockerイメージをphp:5.6-apacheに基づいています。
docker attach <container name>
コンテナからstdoutを表示するための良い方法です。ただし、ctrl + dまたはctrl + cを実行すると、進行中のタスクが終了(sigkill)することに注意してください。したがって、エスケープキーを使用して適切にデタッチする必要がありますctrl+p+q
。コンテナにシェルをしたいだけなら、exec
上記のコマンドを使用することをお勧めします。