joppotjoppotコピペで絶対動く。記事を書いたあと気付いたのですが、busyboxにファイルはアップロードできるのですが、プラグインがインストールできませんでした。ただいま、研究中なので、解明次第、記事を更新したいと思います。やり方を知っている方がいらっしゃいましたら、コメント欄かtwitterで補足していただけると幸いです。みなさんこんにちはcandleです。今回はdockerを使ってwordpressの環境を作りたいと思います。wordpressと言っても様々な構造があります。僕が今回紹介するのはこのような構造になります。containerにマウントします。dockerの基本的な構成は以下のサイトを参考にさせてもらいました。macじゃなくても問題ないと思います。mysqlはmacにインストールしてありますが、それもわかる人は適宜調整してください。公式サイトからwordpressをダウンロードします。https://ja.wordpress.orgzipを解凍して、フォルダの名前をbob_blogにします。私はデスクトップ上で作業します。執筆時のwordpressの最新バージョンは4.7.4です。bob_blogwordpressプロジェクトが完成しました。最初にbusyboxのDockerfileを作成します。このbusyboxのcontainerにbob_blogの全てのファイルを保存します。Dockerfile以下を記述します。containerにbob_blogをコピーして、それをvolumeにします。のちに記述するnginxとphp-fpmのcontainerはこのbusyboxのvolumeをマウントしてファイルを参照します。次に、nginxのためのDockerファイルとnginxの設定ファイルを作成します。nginx/server.confnginxのDockerfileを開きます。nginx/Dockerfile以下を追加します。containerに加えるだけの記述です。nginx/server.confを開きます。nginx/server.conf以下を記述します。containerの作成php-fpmの為のファイルを作成します。こちらはDockerfileのみ用意します。php-fpm/Dockerfilephp-fpm/Dockerfileを開いて、以下を記述します。mysqli最後のRUN文はphp-fpmでmysqlを扱う為のパッケージをインストールしています。docker-composeのファイル作成dockerのビルドや実行をまとめてくれるdocker-composeの為のファイルを作成します。docker-compose.ymlエディタで開いて以下を書き込みましょう。busybox軽く説明します。busyboxのvolumeをマウントしています。最後にbusyboxにコピーしないファイルの定義を書きます。busyboxにはbob_blogの全ファイルをコピーするのですが、docker系のファイルは不必要です。そこで.dockerignoreに不必要なファイル名を記述して無視します。.dockerignore.dockerignoreを開きます。Dockerfiledocker-compose.yml.dockerignore.git.gitignorenginxphp-fpmファイルの記述は以上です。Dockerfilemysqlの接続設定それではmysqlの設定をしましょう。containerは今回の構成ではmacに搭載されているmysqlにアクセスするようにします。wordpressのmysql設定はwp-config.phpに記述します。この時アドレスを一般的には「localhost」か「127.0.0.1」にします。containerからホストのローカルIPアドレスにアクセスする時、127.0.0.1とlocalhostは使えません。対策として、独自のローカルIPアドレスをMacに割り振ります。詳しいことは前回の記事を参照してください。IPアドレスを割り振ります。10.200.10.1/24できたらifconfigコマンドで確認します。PCを再起動すると解除されます。自動的に割り振りたい場合は以下の記事を参照してください。wp-config-sample.phpをコピーして、wp-config.phpを作成します。wp-config.phpwp-config.phpを開いて、以下の箇所を変更します。'10.200.10.1');ついでにsaltの値も変更しておいてください。Hostの値が先ほど設定したlo0のIPアドレスになっています。bob_blogのデータベースを先に作成します。macのmysqlにログインします。-pログインしたら以下のコマンドでデータベースを作ります。utf8;これで良いでしょう。以下のようなアクセスが可能になります。dockerを起動するさて、dockerを起動してみましょう。bob_blogの中で以下を実行します。-d終わったら、ブラウザでいかにアクセスします。http://127.0.0.1/wp-admin/install.php以下のような画面がでれば、成功です。containerにアクセスします。containerにプロキシします。containerは/var/www/htmlにbusyboxからマウントしたphpファイルを実行し、必要とあらば、mysqlにアクセスします。nginxに要求されたファイルが画像やjsの場合はnginxの/var/www/htmlにマウントしたbusyboxのファイルを持ってきて返します。注意点このbusyboxはbob_blogのファイルを全て持っていますが、全てのファイルを永続的に保持しているわけではありません。このdocker-composeの書き方では、起動するたびにmacのbob_blogをcopyしてvolumeを作成します。wordpressを立ち上げて、メディアファイルをアップロードしても、ファイルはあくまでbusyboxの中に配置されるだけであり、もしまたdockerを再起動するとbob_blogは上書きされてメディアファイルが削除されます。busyboxを永続化したい場合は、うまくdocker-composeを編集して別にvolumeを作成して、毎度そちらをマウントするような書き方が必要です。筆者は試していないので、ここでは書きませんが、予期せぬことがないよう注意してください。筆者はこれを本番環境でやる場合はメディアファイルを別のストレージ、例えばS3に持つことで解決できると考えています。busyboxには最低限プログラムファイルがあるだけでよいと思っています。おまけためしに、wordpressのサイトを動かしてみましょう。インストール画面で「サイトのタイトル」bob_blog「ユーザー名」bob「パスワード」好きなパスワード(ローカルだからなんでもよい)「メールアドレス」bob@example.comで作ってみます。「wordpressをインストール」ボタンを押します。するとリダイレクトします。僕の場合、ここは表示がうまくいかないです。ホームに戻ると、正しく表示します。終了する時はvolumeも破棄するようにします。-vこれで全て止まります。まとめ今回のdockerの構築は本番環境も見据えて、少し変な構成にしました。Macでより実用的な構成はまた別の機会に紹介したいと思います。スポンサードリンク「為になったなぁ」と思ったら、シェアお願いします。コメントをキャンセルメールアドレスが公開されることはありません。みなさんこんにちはcandleです。今回はdockerを使ってwordpressの環境を作りたいと思います。Sansフォントウェイトのcss書き方まとめプロフィールベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。環境設定スポンサードリンクjoppotコピペで絶対動く。