VPS内のLAMP環境をDockerコンテナに移行する
前回、Dockerをインストールしコンテナを作れることを確認したので実際にVPSに入っているLAMP環境をDockerコンテナに移行したいと思います。
Dockerfileの作成
Docker Hubを探せばいろんな人が作ったLAMP環境のイメージがあるんですが、Chefとかと同じで自前で作った方が良いということでDockerfileからイメージを作ることにします。
今回作ったのは下記の通り、
通常のLAMP環境に加え、perlのCGIをいくつか動かしていたのでperlを、既存環境のファイルをやりとりするためtarとgzipをインストールしています。
そのほかには、コンテナ管理にVagrantを使うことにしたので、vagrant ssh
するためにsshをインストールしています。
こうやっておくとvagrant ssh
した際にパスワードを入力するだけでコンテナにアクセスすることが出来るのでIP調べなくていい分、若干楽です。
コンテナ管理にVagrantを使ってみる
コンテナ管理には(個人的に慣れてるので)Vagrantを使用しますが、VagrantからDockerを操作するにはVer1.6以上が必要なのでインストールしていない場合はインストールします。
インストールはrpmコマンド一発です。
インストールが終わったらDockerfileと同じ場所にVagrantfileを作ります。
今回作ったVagrantfileはこんな感じ、
内容としてはカレントディレクトリのDockerfileをビルドして80番ポートをホスト側の8080ポートに紐付けます。
で、両方整ったらコマンド叩いて起動します。
最初はイメージのビルドを行うので結構時間がかかります。
正常に終わったら、
と叩いてログインできるか確認します。
ログインできたらついでにちゃんとサービスが起動しているか確認します。
せっせと移行する
入れ物ができあがったらあとは既存の環境からファイルやらDBのダンプやらをコンテナ環境に持ってきて移行作業を行います。 Vagrantを使っている関係でVagrantfileがあるディレクトリが/vagrant/として共有されているのでそこに放り込んでおけば作業が楽です。
移行作業そのものはケースバイケースなのと基本的に移行元と同じ環境なので移行元と同じようにすれば良いので割愛。 IPとポートは変わってるのでその辺設定ファイルを書き換える必要があります。
移行が終わったら8080番ポートにアクセスしてコンテナ上のサービスにアクセス出来ることを確認します。(紛らわしいのでホスト側のサービスは止めておきます)
上手く動いたらホスト側のnginxでリバースプロキシの設定をして移行は終わりです。