使用docker-compose快速搭建WordPress环境

环境

OSX El Capitan = OSX 雪豹版
docker Version 1.13.1 = Docker 版本 1.13.1

安装Docker for Mac

在Mac上安装Docker。

创建用于WordPress的目录

好きな名前のディレクトリを作る
$ mkdir { my-wordpress-dir-name }

ディレクトリに移動する
$ cd { my-wordpress-dir-name } 

准备docker-compose。

创建一个docker-compose.yml文件。

version: '2'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     image: wordpress:latest
     depends_on:
       - db
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

给容器取一个名字

  db:
    image: mysql:5.7
    container_name: {my-container-name-db}

-略-

  wordpress:
    image: wordpress:latest
    container_name: {my-container-name}

通过上述操作,可以给任何的容器命名。
如果不做任何指定,将会以wp_wordpress_1、wp_db_1等命名的方式,容器的命名会变得难以理解,所以建议进行指定。
由于db和WordPress需要使用不同的容器,可以在db的末尾添加-db之类的以区分它们。

同样地,给网络一个明确的名称也是一个好主意。

    networks:
      - {my_wordpress_network}

将进行开发的目录与容器同步

在Docker中,可以将本地PC的目录与容器内的目录同步(挂载)。此时挂载的区域被称为卷。

为了在本地环境中编辑WordPress并将其同步到容器中,需要按照以下方式进行描述。

    volumes:
      - "$PWD:/var/www/html"
      - "$PWD/.docker/backup:/tmp/backup"
      - "$PWD/.docker/log:/tmp/log"

更改访问端口

由于默认情况下设置为”8000:80″,所以如果已经在localhost:8000上运行了,请进行更改。
如果端口重复,则在构建过程中会出现错误并停止构建。
如果构建在中途停止,可能会出现异常的容器,请参考以下内容,将其重置并重新开始。

将环境变量整理到.env文件中统一加载。

可以通过以下方式来读取外部的.env文件。

    env_file: .env

以下是全部樣本。

version: "2"
services:
  wordpress:
    image: wordpress:latest
    container_name: "{my-container-name}"
    volumes:
      - "$PWD:/var/www/html"
      - "$PWD/.docker/backup:/tmp/backup"
      - "$PWD/.docker/log:/tmp/log"
    ports:
      - {"my-port-number"}
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: "db:3306"
    networks:
      - {my_wordpress_network}
    env_file: .env

  db:
    image: mysql:5.7
    container_name: "{my-container-name-db}"
    volumes:
      - "db-data:/var/lib/mysql"
    networks:
      - {my_wordpress_network}
    env_file: .env

volumes:
  db-data:

networks:
  {my_lwordpress_network:}
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=admin
WORDPRESS_DB_PASSWORD=pass

MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=admin
MYSQL_PASSWORD=pass

使用docker-compose.yml进行构建

输入“build”命令

// imageを呼び出してcontainerをbuildする
$ docker-compose up -d

收到这样的消息后,WordPress开始构建。

Creating network "{my-network-name}" with the default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
...
Digest: sha256:34a0aca88e85f2efa5edff1cea77cf5d3147ad93545dbec99cfe705b03c520de
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
efd26ecc9548: Already exists
a3ed95caeb02: Pull complete
589a9d9a7c64: Pull complete
...
Digest: sha256:ed28506ae44d5def89075fd5c01456610cd6c64006addfe5210b8c675881aff6
Status: Downloaded newer image for wordpress:latest
Creating my_wordpress_db_1
Creating my_wordpress_wordpress_1

确认图像已经被创建

// image一覧を見る
$ docker image ls
スクリーンショット 2017-02-26 4.57.46.png

确认容器已经启动

// 起動しているcontainerの一覧を見る
$ docker container ls

以下是查看包括未启动的容器在内的列表的命令。如果您意图启动的容器没有启动,可以使用此命令确认构建是否失败。

$ docker container ls -a
スクリーンショット 2017-02-26 4.57.22.png

请访问 localhost:8000 进行确认。

スクリーンショット 2017-02-23 14.10.32.png

太简单了吧…!

当构建失败时

停止并删除相关的容器。

// buildしたcontainerを停止した上で削除する
$ docker-compose down -v

请确认是否存在失败的容器和网络。

// 起動していないcontainerも含めて一覧で見る
$ docker container ls -a


// 存在するnetworkのlistを見る
$ docker network ls

当无法删除由于某种原因而无法成功执行docker-compose down -v的容器或不需要的网络时,请使用以下命令进行处理。

1. 如果存在不必要的容器,但却没有启动的情况下。

// 起動していないcontainerを一括削除する
$ docker container prune

2. 如果存在不必要的容器并且正在运行。

// containerを停止する
$ docker stop {containerのハッシュ値}

// 対象のcontainerを削除する
$ docker rm {containerのハッシュ値}

3. 如果存在不需要的网络

// networkを削除する
$ docker network rm {networkのハッシュ値}

我参考了一篇文章。

以下是原汁原味的中文版本,只提供一种选择:
https://docs.docker.com/compose/wordpress/
https://tech.recruit-mp.co.jp/infrastructure/post-11266/
http://qiita.com/muk-ai/items/3350122d9e09473723c6

广告
将在 10 秒后关闭
bannerAds