指定のディレクトリにプロジェクトをgit cloneしてdocker-compose up -d で環境が立ち上がるDocker開発環境のセットです。
Dockerコンテナのオーケストレーションツール Docker compose
を利用した環境構築のDocker
ファイル郡です。
自作ツールとしてGitHub
にソースを公開しています
https://github.com/kaperrine-dog/node-wp.docker-env
PHP
のサイト構築を行う際にローカル環境構築の手間を省くことが目的で1年程度前に作成したものを
WordPress
にも対応できるように手を加えたものです。
さらに、このツールではWordPress
をHeadless CMS
として利用し、フロントエンドをNode.js
環境で構築するような構成にも対応できるように手を加えています。
また、Docker
を使用しているので、ローカル環境に影響を与えないこともメリットです。
ディレクトリ構成は以下の通り
.
├── docker-compose.yml
├── mysql
│ ├── Dockerfile
│ ├── db_data
│ └── mysqld_charset.cnf
├── node
│ ├── Dockerfile
│ └── app
│ ├── LICENSE
│ ├── README.md
│ ├── ...node_projects
├── php
│ ├── Dockerfile
│ ├── config
│ │ └── php.ini
│ ├── src
│ │ ├── gulpfile.babel.js
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ └── webpack.config.js
│ └── wp-setup.sh
├── phpmyadmin
│ └── phpmyadmin-misc.ini
├── readme.md
└── wp
├── Dockerfile
├── config
│ └── php.ini
├── docker-entrypoint.sh
├── gulpfile.babel.js
├── package.json
├── webpack.config.js
├── wp-content
│ ├── themes
│ └── uploads
└── wp-setup.sh
php/
: WordPress
やPHP
のみで動く環境の場合に使用するボリュームphp/src/
でgit clone
を行う
wp/
: WordPress
をHeadlessCMSとして使用する場合のボリューム。何も置かなくていい。
mysql/
: データベースの設定ファイルなどを入れるボリューム
mysql/db_data/
: データベースの永続化のためのデータ格納用ボリューム
.env
: 作成する環境毎に変更 環境変数, docker-compose up
などのコマンド事項の際に読みに行きます。
node/
: Node.js
ベースのフレームワーク(e.g. React.js
, Vue.js
)を使用する際に使います. node/app
直下にプロジェクトを配置します。
Dockerコンテナ
内のパスワードはnode/
の場合node
, root
ユーザーはroot
php/
とwp/
の方は常にコンテナ内にroot
で入るようになっていたと思います(wp-cli
利用時--allow-root
が必須).
Node.js
を使わないWordPress
プロジェクトの場合,プロジェクトディレクトリを予めnew-project
などと作成しておく。
その後php/src
に移動し,
$ cd php/src
目的のプロジェクトをgit clone
$ git clone git@github.com:$github_username/$new_project.git
そうすると
new-project/php/src/new-project.com/htdocs/...
となる.
phpMyAdmin
に入るか、MySQL
のコンテナに入って
wordpress
のDBでDBをインポート.
データベースの環境変数として以下に設定してあるので
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
後程、これに合うようにwp-config.php
が自動で作成されるShell Scriptを回します。
docker-compose.yml
のあるディレクトリ(Dockerプロジェクトルート)に戻って
$ docker-compose up -d
を行う
初回でdocker image
がない場合やDockerfile
に変更があった場合はdocker-compose up --build
が同時に走ってdocker image
とキャッシュが作成される。
build cache
が存在する場合は差分のみbuild
実施されます。
下記でコンテナ内へアクセス。
$ docker exec -it $container_name bash
コンテナ名はdocker-compose.yml
のあるディレクトリの.env
に書くようにしています。
WordPress
の場合は、初回のみ、
コンテナにログインした後
$ bash wp-setup.sh
を回してください.
wp-cli
で自動でWordPress
環境を構築してくれます。
Node.js
プロジェクトの場合docker-compose.yml
のnode
コンテナの部分のコメントアウトを外す。
Node.js
のみ必要な場合は適宜不要なコンテナをコメントアウト
node/app
以下にプロジェクトを配置
node/app/package.json
となるような配置を想定しています。
WordPress
をヘッドレスCMSとしてNode.js
のプロジェクトを立てる場合は
wp/
以下は特に何もコピーしなくていいですが、
コンテナ内でwp-setup.sh
を回す事を忘れないようにしてください。
$ docker-compose up -d
$ docker exec -it wpコンテナ名 bash
でコンテナ内にログインして
$ bash wp-wetup.sh
でプラグインなどをインストール。
このコンテナには予めyarn
とnpm
がインストールされている。
どちらを使っても良い。
node/app
に配置されたプロジェクト上でローカルサーバーを回す場合は
$ docker exec -it node.jsコンテナ名 bash
でコンテナにログインして任意のコマンドを実行。
ここで、Node.js
コンテナ内で動かす開発サーバーは
host
として0.0.0.0
を指定する。
例えばGatsby
の場合は以下のように開発サーバーを立ち上げる。
gatsby develop --port=ポート番号 --host=0.0.0.0
これでコンテナ外からブラウザでコンテナ内の開発サーバーにアクセスできる。