sql >> データベース >  >> RDS >> Mysql

Dockerを使用したApache、MySQL、PHPのコンテナ化

    PHPを使用していて、コンテナーごとに1つのプロセスを使用したい場合は、NginxとPHP-FPMを使用することをお勧めします。これは、このタイプのセットアップではApacheよりも構成が非常に簡単だからです(少なくとも私はそうしています)見つけました。

    NginxコンテナとPHPコンテナの両方に共通の共有ボリュームがあることを確認する必要があります。そのボリュームには、index.phpがあります。 。これがdocker-compose.ymlの大まかな例です:

    services:
      php7:
        image: "php:7.1.10-fpm"
        container_name: "prefix-php"
        volumes:
          - "./your/local/dir:/var/www/html"
      nginx:
        image: "nginx:1.13.6"
        container_name: "prefix-nginx"
        ports:
          - "80:80"
          - "443:443"
        links:
          - "php7"
        volumes:
          - "./your/local/dir:/var/www/html"
    

    次に、docker-compose.ymlがあるディレクトリで次のコマンドを実行します。 ファイルは:

    $ docker-compose -p prefix
    

    「プレフィックス」の理由は、他のコンテナ名と衝突しないように、コンテナのプロジェクトグループを作成するためです。

    当然、/var/www/htmlを指すnginxサイト構成が必要になります 。 php-fpmコンテナの構成要件はほとんどまたはまったくありません。

    nginx構成に関する補足。上記のdocker-compose.ymlは、nginx構成内のphpコンテナーを参照しないと不完全です。これは次のようになります(大まかに言えば):

    server {
        listen 80 default_server;
    
        # ...more config, like root, index, server_name, etc
    
        location ~* \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass prefix-php:9000; # Note the container name here.
            fastcgi_index index.php;
            fastcgi_hide_header X-Powered-By;
            fastcgi_read_timeout 300s;
    
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        # ...more rules
    }
    

    コンテナに「php7」という名前を付けたことがわかります。実際には、このdocker-compose.ymlに別の「php5」コンテナを追加できます。 次に、同じdocker-composeセットアップで実行されているさまざまなバージョンのPHPを使用するnginxサイトを定義できます。

    これはapacheを使用して解決しないため、質問に直接答えることはできませんが、検討する代わりになります。

    うまくいけば、これは少なくともあなたのセットアップを解決するのに役立つアイデアをあなたに与えるでしょう。



    1. MariaDBでのTO_DAYS()のしくみ

    2. ASP.NETMVCからmySQLへの最適なORMオプション

    3. MYSQLのすべてのテーブルからデータを削除します

    4. MySQL-スレッドごとに最新のトピックを表示する方法