ホームページ  >  記事  >  バックエンド開発  >  ローカルの PHP アプリケーションを Docker コンテナに移行する

ローカルの PHP アプリケーションを Docker コンテナに移行する

WBOY
WBOYオリジナル
2016-06-23 13:15:481305ブラウズ

シナリオ: サーバー上でローカルに実行されている LAMP サービスがあります。サーバーは頻繁に移動されるため、従来の再配置方法は非常に面倒です。そのため、将来の再配置を容易にするために、実行中のサービスを Docker コンテナーに移行する予定です。


タスク: ローカル PHP アプリケーションを Docker コンテナーに移行します。


ナンセンスではありません。この問題は 4 つのステップで解決してください。ウェブサイトをバックアップしてください

最初の方法

ステップ 1: 画像をプルします。

docker pull tutum/lamp

ステップ 2: コンテナーを実行します。

この実験では、ローカル アプリケーションのルート ディレクトリは /home/wwwroot/default です。状況に応じてパスを変更してください。 YOURPASSWORD は、以前のデータベース パスワードを保持します。

docker run -d -p 81:80 -p 3307:3306 -e MYSQL_PASS="YOURPASSWORD" -v /home/wwwroot/default:/app tutum/lamp

ステップ 3: アプリケーション データベース構成ファイルを変更します。

このイメージでは、root ユーザーはコンテナーの外部に接続できません。管理者ユーザーを使用する必要があります。

PHP アプリケーションの構成ファイル内のデータベース ユーザー名を変更するだけです。

ステップ 4: ローカル データベース データをエクスポートし、コンテナーにデータベースをインポートします。

あまりにも簡単なので、mysql コマンドラインからエクスポートおよびインポートするだけです。

上記は最初の方法です。この方法は実行中のプログラムに触れる必要がなく、シームレスな切り替えを実現します。ただし、欠点は、結局のところ、ローカル データをパッケージ化する必要があることです。つまり、時間があれば 2 番目の方法を使用できます。


2 番目の方法

ステップ 1: Dockerfile を作成し、LAMP イメージを自分で構築します。

ローカル データをパックし、wwwroot.zip という名前を付けました。パッケージング ファイル ディレクトリで vim Dockerfile を実行します

FROM tutum/lamp:latestRUN rm -rf /appADD wwwroot.zip /app/RUN apt-get updateRUN apt-get install -y unzipRUN cd /app && unzip wwwroot.zipRUN rm -rf /tmp && rm /app/wwwroot.zipEXPOSE 80 3306CMD ["/run.sh"]

ステップ 2: ビルドします。

docker build -t local/lamp .

ステップ 3: コンテナを実行します。

  • 最初にデータベースをエクスポートします
  • LAMPを閉じる
  • コンテナを実行します(YOURPASSWORDは以前のデータベースパスワードを保持します)
    docker run -d -p 81:80 -p 3306:3306 -e MYSQL_PASS="YOURPASSWORD" local/lamp

ステップ4: データベースの構成。

コンテナの外部では root ユーザー接続は許可されていないことに注意してください。構成ファイルで変更する必要があるのはデータベース ユーザー名のみです。

ローカル データベース データをエクスポートし、コンテナーにデータベースをインポートします。

余談

ポート 81 が公開されていることに気づくかもしれませんが、これは、フロントエンドをアンチプロキシとして Nginx に渡したためです。

詳細: 「複雑な」コンテナ環境用の Nginx リバース プロキシの構成

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。