docker化php開発環境の構築

4017 ワード

php-docker-env
初めてdockerに触れるphp開発者を助け、docker化されたphp開発環境を迅速に構築します.
含まれるコンポーネント
  • mysql : 5.7.18
  • php : 7.1.7
  • xdebug : 2.5.5
  • apache : 2.4.10

  • ミラーソースについて
    mysqlとphp-apacheはいずれも網易蜂の巣を使ってDockerHubから引き寄せた公式ミラー
  • 網易蜂の巣を閲覧するには
  • にログインする必要がある場合があります.
    クイックスタート
    dockerがインストールされていることを確認してください
  • Macインストールdocker
  • Windowsインストールdocker
  • 他のユーザ
  • dockerクイックエントリー
  • ミラーをプル
    mysqlミラーを取得するには、次のコマンドを実行します.
    docker pull hub.c.163.com/library/mysql:5.7.18
    

    php-apacheミラーを取得するには、次のコマンドを実行します.
    docker pull hub.c.163.com/library/php:7.1.7-apache
    

    独自のミラーを作成
    以上,docker runコマンドを用いて2つのベースミラーを取得した.しかし、開発環境では、PHPにxdebugプラグインをインストールしてデバッグを容易にし、phpとapacheを構成する必要があります.php-apacheというミラーに基づいてミラーをカスタマイズします../docker/Dockerfileでは、dockerがこのミラーをどのように構築するかが定義されています.必要なのは
    docker build -t webserver ./docker/
    

    Webserverというミラーを構築できます.(ミラーの構築に時間がかかる場合があります)
    コンテナの作成(ミラーの実行)
    mysqlの起動
    mysqlを最初に起動するには、次のコマンドを実行します.
    docker run --name mydb -v "$PWD"/mysql:/var/lib/mysql -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=root hub.c.163.com/library/mysql:5.7.18
    

    コマンドの詳細:
  • この命令はhubに基づいている.c.163.com/library/mysql:5.7.18ミラーはmydbというコンテナを作成して実行します.
  • このディレクトリの下のmysqlディレクトリを./mydbコンテナの/var/lib/mysqlディレクトリは、mydb実行時に生成されたデータが保存されます.
  • ホストの3306ポートをmydbコンテナの3306ポートにマッピングします.
  • mysqlのrootユーザーパスワードをrootに設定します.後で./mysql/ディレクトリmysqlミラーを実行すると-e MYSQL_を持たないROOT_PASWORD=rootパラメータです.直接実行可能:
  • docker run --name mydb -v "$PWD"/mysql:/var/lib/mysql -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=root hub.c.163.com/library/mysql:5.7.18
    

    php-apacheの起動
    つまり、Webserverミラーを構築します.
    docker run --name myserver -v "$PWD"/src:/var/www/html -p 8080:80  -e XDEBUG_CONFIG="remote_host=192.168.1.102" -d webserver
    

    コマンドの詳細:
  • このコマンドは、カスタマイズしたwebserverミラーに基づいてmyserverというコンテナを作成し、実行します.
  • このディレクトリの下にある./srcディレクトリはmyserverコンテナの/var/www/htmlディレクトリにマウントされ、phpプロジェクトコードは./srcディレクトリでいいです.
  • ホストの8080ポートをmyserverコンテナの80ポートにマッピングします.
  • -e XDEBUG_CONFIG="remote_host=192.168.1.1102"このパラメータのipアドレスをあなたのホストのipアドレスに変更してください.xdebugプラグインのremote_が設定されていますhost.

  • これでphp開発環境の起動に成功しました
    プロジェクト開発を行う
    phpプロジェクトコードを./src/ディレクトリ、コードを編集するとmyserverコンテナのリアルタイム応答が得られます.ここではThinkPHP 5フレームワークを例に、ブラウザ入力http://localhost:8080/pulbic/ThinkPHP 5フレームのウェルカムページにアクセスできます.
    プロファイル
    ファイルの場所
  • apacheプライマリプロファイルはホストにあります./docker/conf/apache2.confは容器の/etc/apache 2/apache 2に対応する.conf
  • xdebugプロファイルはホストにあります./docker/conf/docker-php-ext-xdebug.iniは容器の/usr/local/etc/php/conf.d/docker-php-ext-xdebugに対応する.ini
  • phpプライマリプロファイルは./docker/conf/php.iniは容器の/usr/local/etc/php/phpに対応する.ini
  • 仮想ドメイン名プロファイルを./docker/vhost/コンテナに対応する/etc/apache 2/sites-enabled/
  • 有効な構成
    コンフィギュレーションファイルはdockerコンテナの作成時にコンテナにパッケージされるため、動的に変更できません.構成を変更した後、現在実行中のコンテナを停止して削除し、コンテナを再作成する必要があります.
    docker stop myserver 
    docker rm myserver
    docker build -t webserver ./docker/
    docker run --name myserver -v "$PWD"/src:/var/www/html -p 8080:80  -e XDEBUG_CONFIG="remote_host=192.168.1.102" -d webserver
    

    コンテナとのインタラクション
    docker exec [   ] [       ]
    
  • 以上のコマンドは、ホスト内でコンテナに特定のコマンドを実行させることができる.
  • -iフラグを追加すると、ホスト対コンテナの入力を維持できます.
  • −tフラグを追加すると、コンテナに偽端末を開くことができる.
  • より多くの使用方法コマンドdocker exec--help
  • を実行してください.
    mysqlと対話することができます
    docker exec -it mydb mysql -h 127.0.0.1 -u root -p
    

    このコマンドは端末を開き、mysql rootユーザーパスワードを入力するとmysqlに接続できます.
    exit
    

    端末を終了できます.
    コンテナに入ってより多くのコマンドを実行
    docker exec -it myserver /bin/bash
    

    以上のコマンドはmyserverコンテナに入り、ls、cd、psなどのコンテナ内でより多くのコマンドを実行できます.
    詳細はdockerクイックスタートを参照してください
    お互いに勉強して交流してQQをプラスすることができます:568499182
    勉強が楽しい!