使用docker-compose来部署WordPress

文章目录

[隐藏]

  • 部署方式介绍
  • 准备工作
  • 准备配置
  • 启动容器
  • 结束语

很早的时候想维护一个个人Blog,一开始通过 github home page + jekyll,奈何没精力再去把ruby玩溜,自己也不是个擅长改写前端页面的人,无疾而终。今天终于鼓起勇气,买了服务器和域名,部署了wordpress,毕竟wordpress易用易上手,模板也多,也就懒得自己改了。既然本Blog是运行在Docker之上的,那第一篇文章也就来说说这个吧。

部署方式介绍
  • 我的服务器安装的是Arch Linux,自己也是比较喜欢这个极简的Linux发行版。
  • 我使用了docker-compose来做镜像编排工具,nginx,mysql(mairadb),wordpress分别运行于不同的容器。
  • 托上面两个先决条件的福,下面的内容大家根据自己的实际环境,酌情选择。
准备工作

安装Docker

托Arch Linux的福,安装Docker非常简单。

pacman -S docker  

安装docker-compose

同样是托Arch的福,安装依旧简单粗暴。

pacman -S docker-compose  
准备配置

首先我们需要做的是准备好docker wordpress运行的用户,执行以下命令,添加一个叫wordpress的新用户,将它添加到docker用户组,并为它设置密码

useradd -m -s /bin/zsh wordpress  usermod -a -G docker wordpress  passwd wordpress  

紧接着,创建一些目录,保存docker-compose配置文件,存储运行产生的文件,让数据库落地到本机而不是容器,执行以下命令

su - wordpress  cd  mkdir wordpress-compose  touch docker-compose.yml  mkdir -p wordpress-compose/db-data  mkdir -p wordpress-compose/logs/nginx  mkdir -p wordpress-compose/nginx  mkdir -p wordpress-compose/wordpress  

这些目录和文件的功能分别如下:

目录或文件 含义

  • wordpress-compose 容器相关根目录
  • wordpress-compose/db-data 数据库数据存储目录
  • wordpress-compose/logs/nginx nginx存储目录
  • wordpress-compose/nginx nginx配置文件
  • wordpress-compose/wordpress wordpress本体,因为安装插件等会改变php文件

接下来我们编写必要的nginx配置文件。在wordpress-compose/nginx下新建wordpress.conf文件,文件中写入下面这些配置,一个很经典的php-fpm的nginx配置文件。

server {      listen 80;      server_name www.gsgtzq.com;        root /var/www/html;      index index.php;        access_log /var/log/nginx/wordpress-access.log;      error_log /var/log/nginx/wordpress-error.log;        location / {          try_files $uri $uri/ /index.php?$args;      }        location ~ .php$ {          try_files $uri =404;          fastcgi_split_path_info ^(.+.php)(/.+)$;          fastcgi_pass wordpress:9000;          fastcgi_index index.php;          include fastcgi_params;          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;          fastcgi_param PATH_INFO $fastcgi_path_info;      }  }  

接下来就是docker-compose配置文件的编写了,首先将工作目录切换至刚刚创建的wordpress-compose目录,用自己熟悉的编辑器打开docker-compose.yml文件。

vim docker-compose.yml  

先是nginx部分,我使用最新的nginx镜像,暴露80端口给本机,挂载conf.d、log、/var/www/html目录到本机,连接nginx和wordpress容器。

nginx:          image: nginx:latest          ports:                  - '80:80'          volumes:                  - ./nginx:/etc/nginx/conf.d                  - ./logs/nginx:/var/log/nginx                  - ./wordpress:/var/www/html          links:                  - wordpress          restart: always  

然后是mysql部分,我使用了mairadb的最新镜像,挂载mysql数据存储点到本机,链接mysql和wordpress容器,通过环境变量设置mysql的默认root密码。

mysql:          image: mariadb:latest          volumes:                  - ./db-data:/var/lib/mysql          environment:                  - MYSQL_ROOT_PASSWORD=123345          restart: always  

最后是wordpress本体,我使用wordpress:php7.1-fpm的镜像,挂载/var/www/html目录到本机,链接连接mysql容器和wordpress,并且使用环境变量,指定mysql主机名,表前缀,和库名。

wordpress:          image: wordpress:php7.1-fpm          volumes:                  - ./wordpress:/var/www/html          environment:                  - WORDPRESS_DB_NAME=wpdb                  - WORDPRESS_TABLE_PREFIX=wp_                  - WORDPRESS_DB_HOST=mysql          links:                  - mysql          restart: always  

到此位置,docker-compose的配置文件全部编写完毕。

启动容器

编排文件已写完,接下来启动容器即可。

docker-compose up -d  

当收到三个done以后,编排好的容器就正式启动了,我们现在可以访问本机的IP或域名来访问wordpress了。
我还可以使用下面这些命令来检查容器的运行情况,注意,docker-compose命令只有在刚才写好配置文件的目录下执行才有效果。

命令 含义

  • docker ps -a 查看当前所有运行的docker容器
  • docker-compose logs wordpress 查看wordpress容器的日志
  • docker-compose ps 查看当前编排好的应用的所有容器状态
  • docker-compose top 查看当前编排好的应用中各容器中的进程情况

具体还有一些其他的办法,可以通过查阅docker手册和docker-compose文档来进行使用。

结束语

到此为止,使用docker来运行wordpress已经完成,从开始折腾Docker到现在少说1个半月过去了,也是学习到了非常多的东西,目前而言公司的项目想用起docker来还是有不少难度,我思考了很多使用docker对传统部署和开发带来冲击的问题,例如对开发人员的要求其实高了很多,尤其是在运维这块,基础环境部署等等……但很希望自己能把它用好了,开发受益,运维也受益。

原文出处:gsgtzq -> http://www.gsgtzq.com/2017/07/17/running-wordpress-with-docker/

相关推荐

发表回复

房先生
我们将24小时内回复。
2024-07-20 19:20:05
您好,有任何疑问请与我们联系!
您的工单我们已经收到,我们将会尽快跟您联系!
[QQ客服]
2781198
加我微信
[电话联系]
13585372227
[电子邮件]
chaoneo@163.com
取消

选择聊天工具: