シナリオ: サーバー上でローカルに実行されている LAMP サービスがあります。サーバーは頻繁に移動されるため、従来の再配置方法は非常に面倒です。そのため、将来の再配置を容易にするために、実行中のサービスを Docker コンテナーに移行する予定です。
タスク: ローカル PHP アプリケーションを Docker コンテナーに移行します。
ナンセンスではありません。この問題は 4 つのステップで解決してください。ウェブサイトをバックアップしてください。
docker pull tutum/lamp
この実験では、ローカル アプリケーションのルート ディレクトリは /home/wwwroot/default です。状況に応じてパスを変更してください。 YOURPASSWORD は、以前のデータベース パスワードを保持します。
docker run -d -p 81:80 -p 3307:3306 -e MYSQL_PASS="YOURPASSWORD" -v /home/wwwroot/default:/app tutum/lamp
このイメージでは、root ユーザーはコンテナーの外部に接続できません。管理者ユーザーを使用する必要があります。
PHP アプリケーションの構成ファイル内のデータベース ユーザー名を変更するだけです。
あまりにも簡単なので、mysql コマンドラインからエクスポートおよびインポートするだけです。
上記は最初の方法です。この方法は実行中のプログラムに触れる必要がなく、シームレスな切り替えを実現します。ただし、欠点は、結局のところ、ローカル データをパッケージ化する必要があることです。つまり、時間があれば 2 番目の方法を使用できます。
ローカル データをパックし、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"]
docker build -t local/lamp .
docker run -d -p 81:80 -p 3306:3306 -e MYSQL_PASS="YOURPASSWORD" local/lamp
コンテナの外部では root ユーザー接続は許可されていないことに注意してください。構成ファイルで変更する必要があるのはデータベース ユーザー名のみです。
ローカル データベース データをエクスポートし、コンテナーにデータベースをインポートします。
ポート 81 が公開されていることに気づくかもしれませんが、これは、フロントエンドをアンチプロキシとして Nginx に渡したためです。
詳細: 「複雑な」コンテナ環境用の Nginx リバース プロキシの構成