local環境でwordpressの作業をするためにdockerで環境構築しました。
そのためにdocker-compose.ymlで設定したのでその内容と説明を書きます。
構成
Docker version 18.09.0
├── docker
│ └── docker-compose.yml
└── src
srcディレクトリにwordpressをinstallします
docker-compose.yml
まずはソースから
version: '3'
volumes:
hoge_wp_data: {}
services:
db:
image: mysql:5.7
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
ports:
- "3306:3306"
volumes:
- hoge_wp_data:/var/lib/mysql
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: "wordpress"
MYSQL_USER: "wp_user"
MYSQL_PASSWORD: "wp_pass"
wordpress:
image: wordpress:latest
ports:
- "9000:80"
depends_on:
- db
environment:
WORDPRESS_DB_HOST: "db:3306"
WORDPRESS_DB_NAME: "wordpress"
WORDPRESS_DB_USER: "wp_user"
WORDPRESS_DB_PASSWORD: "wp_pass"
volumes:
- ./../src:/var/www/html
設定について
dockerの起動
-
-d
はバックグラウンドでdocker起動
$ docker-compose up -d
volumesについて
- [ホストディレクトリのパス]:[コンテナのパス]
- どちらかで作業すると片方でも同期する
./../src:/var/www/html
hoge_wp_data: {}
- データを永続化したいからmysqlに設定 初期設定をする必要なし
mysqlが書き込まれる場所
- コンテナで書き込まれる
- 「phpMyAdmin on docker」でGUIを構築
- 「Sequal Pro」でGUIを構築。「webstorm」で設定できる
depends_onとlinksの違い
depends_on
- サービスの依存関係を指定
- 依存関係の順番を指定
// web を開始する前にdbとredisを実行
services:
web:
build: .
depends_on:
- db
- redis
links
- コンテナへのリンク(IPアドレス)をサービス名またはエイリアス名で指定できる
links:
- db
- db:database
- redis
environment
- 各imageの公式サイトに設定方法が記載されている
フロントエンド開発環境
- assetsにjs、sassの作業場を作る
- compileしたものを
src/wp-content/themes/hoge/
にoutputさせる
├── assets
├── docker
└── src
assetsの中身(例)
├── package.json
├── src
│ ├── js
│ │ ├── app.js
│ └── sass
│ ├── _base.scss
│ ├── _extend.scss
│ ├── _layout.scss
│ ├── _mixin.scss
│ ├── _modules.scss
│ ├── _responsive.scss
│ ├── _state.scss
│ ├── _variable.scss
│ └── style.scss
├── webpack.config.js
└── yarn.lock
その他
dockerのimageword-move
を使って本番サーバーにつなげてpush
、pull
させるのがベストプラクティス。
その際、databaseは本番とlocalで分ける。