Loading...

使用docker-compose部署WordPress

发布者 milleros - 10 个月前

1. 前言

Docker这个词接触过很久了,但是与之对应的Docker程序却一直未曾瞻仰过,这次因为需要对公司内现有的协作工具,例如git等程序统一迁移到新的服务器上,但是因为之前一直是直接在环境内安装程序,导致现在迁移起来十分麻烦,需要考虑各种兼容性的问题。

除此之外还考虑到现有的后端程序员小伙伴会使用不同版本的开发环境,导致合并代码时会有很多版本的兼容性问题,故此考虑使用docker-compose来编写docker-compose.yml文件统一开发环境,同时也可以使用统一开发环境部署更多不同语言的开发环境而不受干扰。

2. 准备工作

2.1 安装docker

关于docker的安装这里就不再赘述,如果对docker的安装还不太了解可参考安装 Docker | Docker中文文档

2.2 关于docker-compose

此处我们使用的是docker-compose安装,这里说一下为什么要使用docker-compose安装环境。

在基础的docker中,我们也可以进行docker内程序的安装与卸载等功能,但是我们操作的时候得一个一个命令单个单个的程序进行安装,很麻烦,而且如果遇到需要迁移某些服务时,我们得提前下线相关服务,此时如果我们的docker进程的实例命名不合理的话,很容易因为时间过长都分不清哪些实例才是我们需要下架的,这时docker-compose就派上用场了。

使用过Nodejs的同学应该知道,在应用程序运行之前,我们先要安装应用程序的依赖,而此时我们只需要执行npm install即可,是因为在当前目录下存在一个叫做package.json的文件,此文件记录了所有此项目需要的依赖以及版本,npm install的本质就是告诉npm去这个文件内找需要的依赖,然后下载下来。而这里的docker-compose就类似于npm的安装效用,npm需要package.json,docker-compose就需要docker-compose.yml。当然两者是不可以对比的,npm属于包管理器。

这里提到的docker-compose.yml使用的是yaml语言,关于这个语言的格式不了解请查看基本语法

2.3 安装docker-compose

这里我是用的是CentOS,所以我使用的是yum进行包管理,如果你和我一样使用yum进行包管理,可直接使用下面的命令进行安装:

yum install docker-compose

安装完成后可直接使用docker-compose命令查看是否安装成功。

2.4 编写docker-compose.yml

为了防止以后因为项目过多而导致yml配置文件难以区分,我们应该为每一个docker项目分配单独的目录

$ mkdir wordpress
$ cd wordpress
$ touch docker-compose.yml
vim docker-compose.yml

我们需要在打开的文档内输入以下内容:

version: '3.3'

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

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

关于此处的各配置意思可参考Docker Compose 配置文件详解

我们此处需要修改的是environment内的参数

  • MYSQL_ROOT_PASSWORD:MYSQL内Root用户的密码
  • MYSQL_DATABASE:此时需要为wordpress提供的数据库名称
  • MYSQL_USER:提供给wordpress使用的用户
  • MYSQL_PASSWORD:提供给wordpress使用的用户的密码
  • WORDPRESS_DB_HOST:提供给wordpress使用的数据库的服务地址
  • WORDPRESS_DB_USER:在MYSQL内设置的提供给wordpress使用的数据库用户
  • WORDPRESS_DB_PASSWORD:在MYSQL内设置的提供给wordpress使用的数据库用户的用户密码
  • WORDPRESS_DB_NAME:在MYSQL内设置的提供给wordpress使用的数据库名称

此处我们也可以对ports进行修改,8000:80的意思就是将wordpress需要使用的80端口映射到服务器主机的8000端口上。

3. 安装

说了这么多终于到了安装步骤,其实前面编辑好了docker-compose.yml文件之后,一切事情都简单了,我们只需要在docker-compose.yml所在的目录执行以下命令即可进行安装。

$ docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating wordpress_db_1        ... done
Creating wordpress_db_1        ... 
Creating wordpress_wordpress_1 ... done

出现以上情况则说明服务启动成功,我们可以使用下面的命令进行服务的管理,当然是要在当前docker-compose.yml文件所在的目录内运行。

$ docker-compose start  //启动服务,前提是您docker-compose.yml内的服务是已经存在于docker内了
$ docker-compose stop //停止服务,前提是您docker-compose.yml内的服务是已经存在于docker内了
$ docker-compose down //停止并删除服务组,但是服务组的数据还会被保存,下次启用依然可以使用旧的数据
$ docker-compose down --volumes //停止并删除服务组,数据也会一并删除,不可恢复

前面提到需要确认服务组是否存在与docker的进程内,我们可以使用下面的命令来查看:

docker ps -a

同样的我们也可使用

docker stop/start [实例名/ID]

来停止或开启服务。

4. 结语

关于Docker的更多功能需要我们的不断探索,我也是处于新人阶段,很多东西并不是特别理解,也许会有地方出错,欢迎指正。

标签纵览

APP(1)SSH(1)Docker(1)Python(1)VueJS(3)Nodejs(2)Linux(5)前端(9)
Loading...