LoginSignup
3
2

More than 5 years have passed since last update.

dockerでwordpress環境を構築するためのdocker-compose.yml

Last updated at Posted at 2019-01-19

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を使って本番サーバーにつなげてpushpullさせるのがベストプラクティス。
その際、databaseは本番とlocalで分ける。

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2