Docker Composeを使ってWordPressを簡単構築

Docker Composeを使ってWordpressを簡単構築
目次
はじめに
複数のコンテナを使う場合に、Docker Composeを使うと便利です。
複数のコンテナの定義をymlファイルに記載し利用できます。
今回はdockerでWordpressを構築する例をもとに、Docker Composeについてまとめました。
環境
- Windows10
- docker
Docker Composeの確認
PowerShellから以下のコマンドでDocker Composeを確認します。
1 2 |
docker-compose --version docker-compose version 1.23.2, build 1110ad01 |
Windows版のDockerをインストールしたら入っていました。
Docker Composeを使わない場合
まずはDocker Composeを使わずに構築してみます。
個別にイメージをpullします。
1 2 |
docker pull mysql:5.7 docker pull wordpress:latest |
以下のように2つ起動します。
1 2 |
docker run --name mysql_db -e MYSQL_ROOT_PASSWORD=passwd -e MYSQL_DATABASE=wordpress -d mysql:5.7 docker run --name wp_site --link mysql_db:mysql -p 8000:80 -e WORDPRESS_DB_PASSWORD=passwd -d wordpress |
dockerの引数は以下です。
引数 | 備考 |
---|---|
--name | コンテナ名 |
-e | コンテナの環境変数 |
-d | バッググラウンドで起動 |
--link | 他のコンテナへのリンク |
-p | ポート転送(ホストのポート:コンテナのポート) |
ブラウザで以下のURLにアクセスします。
http://localhost:8000/
WordPressの画面が表示されました。
ついでにインストールしてみましょう。
日本語を選択して「続ける」をクリックします。
データベース名などを入力する画面は表示されませんでした。
なぜなのか気になったので、Wordpressの設定を見てみることにします。
WordPressのコンテナに入るには、execを使用します。
1 |
docker exec -it wp_site /bin/bash |
ドキュメントルートの中に入りました。
1 2 3 4 |
root@4c918f8e5317:/var/www/html# ls index.php wp-activate.php wp-comments-post.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php license.txt wp-admin wp-config-sample.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php readme.html wp-blog-header.php wp-config.php wp-includes wp-login.php wp-signup.php |
catコマンドあたりで、wp-config.phpを見てみます。
やっぱりDBの設定が入っていました。dockerのコンテナ作成時にもう設定されるようですね。
ホストは--linkで指定した「mysql」でアクセスしているのが分かります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'wordpress'); /** MySQL database username */ define( 'DB_USER', 'root'); /** MySQL database password */ define( 'DB_PASSWORD', 'passwd'); /** MySQL hostname */ define( 'DB_HOST', 'mysql'); /** Database Charset to use in creating database tables. */ define( 'DB_CHARSET', 'utf8'); |
インストールに戻って、サイトの情報などを入力します。
これだけでWordpressが使えるようになりました。
Docker Composeを使ってみる
このように複数のコンテナを起動したり停止したりするのが面倒です。
そこでDokcer Composeを使ってみましょう。
先程まで使用したdockerコンテナやイメージは削除しておきましょう。
任意の場所にフォルダを作成します。
先程のフォルダの直下にdocker-compose.ymlファイルを作成します。
中身は以下のようにしました。
内容はdocker runと同じ感じですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
version: '2' services: mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: passwd MYSQL_DATABASE: wordpress wordpress: depends_on: - mysql image: wordpress:latest ports: - "8000:80" volumes: - "./html/:/var/www/html/" environment: WORDPRESS_DB_HOST: mysql:3306 WORDPRESS_DB_PASSWORD: passwd |
versionはComposeファイルのフォーマットです。
バージョンによって書き方が異なるようです。
--linkオプションについては、自動で認識するためdocker-compose.ymlでは指定する必要はありません。
WordPressコンテナは、公開ディレクトリのフォルダをホスト側と共有しました。
docker-compose.ymlと同階層に移動し、以下のコマンドを実行します。
1 |
docker-compose up -d |
初回時はイメージの構築から行われます。
しばらくすると各コンテナが起動します。
dockerコンテナを確認しましょう。
2つとも起動していますね。
1 2 3 4 |
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3abfb63269e4 wordpress:latest "docker-entrypoint.s…" 15 seconds ago Up 10 seconds 0.0.0.0:8000->80/tcp wordpress_wordpress_1 8a86090ba4bc mysql:5.7 "docker-entrypoint.s…" 19 seconds ago Up 15 seconds 3306/tcp, 33060/tcp wordpress_mysql_1 |
ブラウザで以下のURLにアクセスします。
http://localhost:8000/
WordPressの画面が表示されました。
ホスト(Windows)の方でもWordpressのファイルが見えることを確認します。
先程同様に、Wordpressがインストールできることを確認してください。
Docker Composeコマンド
docker-compose.ymlと同じ階層で、それぞれのコマンドが使用できます。
コンテナの起動
-dはバッググラウンドで起動。
1 |
docker-compose up -d |
コンテナの確認
1 2 3 4 5 6 |
docker-compose ps 指定されたパスが見つかりません。 Name Command State Ports ------------------------------------------------------------------------------------- wordpress_mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8000->80/tcp |
コンテナの停止
1 2 3 |
docker-compose stop Stopping wordpress_wordpress_1 ... done Stopping wordpress_mysql_1 ... done |
コンテナの削除
1 2 3 4 5 |
docker-compose rm Going to remove wordpress_wordpress_1, wordpress_mysql_1 Are you sure? [yN] y Removing wordpress_wordpress_1 ... done Removing wordpress_mysql_1 ... done |
コンテナの停止、削除、ネットワーク削除、イメージ削除
1 2 3 4 |
docker-compose down --rmi all Removing network wordpress_default Removing image mysql:5.7 Removing image wordpress:latest |
さいごに
今回はDocker Composeについてまとめました🙂
シンプルで高機能なクリップボード履歴フリーソフト「Clibor」
Cliborはフリーソフトです。
普段よく文字を入力する方や、ブラウザに決まったキーワードを張り付ける方など、テキストの入力がとても便利になりますので是非ご利用ください!