0

Dockerfile にすべてのファイルを追加して Docker で実行していた少し大きな Symfony アプリがあり、コンテナー内からすべてを実行します。これはテスト目的でのみ行っていましたが、今度は開発環境も Docker に切り替えたいと思い、次のようなコマンドを使用して -v パラメーターを使用してローカル ディレクトリをコンテナーにマウントしようとしました。

docker run -v /Users/username/pathtofiles:/pathtofilesincontainer -i -p 80:80 -t tag sh /pathtofilesincontainer/init.sh

これにより、/Users/username/pathtofiles フォルダーが /pathtofilesincontainer にマウントされ、init.sh が正常に実行されます。init.sh は、パフォーマンスなどに影響を与えない基本的なシェル スクリプトです。

私の ~/.profile ファイルは正しく設定されており、/etc/hosts ファイルには current.local を DOCKER_HOST ip に向けるディレクティブがあります。

Dockerfile の ADD コマンドを使用してすべてのファイルをコンテナーにコピーしてアプリを実行すると、0.5 ~ 1 秒の応答時間で完全に実行されます。上記のコマンドを使用して同じファイルをマウントすると、非常に遅くなります。ページは約 25 ~ 35 秒でレンダリングされます。

SOの下で他のトピックを検索しましたが、どれも本当に役に立ちませんでした。xdebug を無効にしたり、php_ini の realcache 設定を推奨値に設定したり、app/console cahce:clear コマンドを実行したり、ローカルの mysql サーバーに接続しようとしたりしました...何も機能しませんでした。

他にアイデアや提案はありますか?前もって感謝します!

私のスタックは次のとおりです: Symfony2、MySQL、Apache2、Docker 1.3.0、boot2docker 1.3.0、VirtualBox

4

2 に答える 2

1

以前にこの種の問題について聞いたことがありますが、通常、VirtualBox と Symfony 開発環境の間の相互作用に責任があります。dev では、リクエストごとにキャッシュが再チェックされるため、変更がすぐに使用されます。ただし、Virtualbox はファイルシステムに関してはそれほど高速ではありません。また、チェックおよび更新されるファイルの数も同様に高速ではありません。

試してみる価値のあるトリックの 1 つは、キャッシュとログのディレクトリを共有フォルダーの外部のパス ( の下/tmp/、または RAM ディスク) に設定することですが、以下を app/AppKernel.php ファイルに入れます。

public function getCacheDir()
{
    if (in_array($this->environment, array('dev'))) {
        return '/dev/shm/symfonyprojectname/cache/' . $this->environment;
    }
    return parent::getCacheDir();
}

public function getLogDir()
{ 
    if (in_array($this->environment, array('dev'))) {
        return '/dev/shm/symfonyprojectname/logs';
    }
    return parent::getLogDir();
}
于 2014-10-28T21:29:31.600 に答える
0

VirtualBox を使用して boot2docker マシンを起動する代わりに、ある場合は Parallel を使用できます。

于 2015-02-05T11:21:28.100 に答える