前言

去年在学习docker,在看完菜鸟教程和第一本docker书后,一直想实战用一下这个技术,多用用才能熟能生巧,真正体验它的利弊。正好傅老板用docker搭完了wordpress,我也就手痒跟着搭建了一下(也就是现在的这个博客网站)。

此处记录一下搭建过程。

搭建环境

  • 阿里云ECS

去年双11买的,720/3年,1核1G1M香港服务器,centos 7.4

有个小插曲,阿里云的工作人员还给我打电话,问我用的怎么样。。阿里云什么时候有这种回访了。。。

  • 域名

阿里云购买即可,像我申请的 .top 域名更是便宜,丧心病狂只要2块钱。。

  • ssl证书

https用的证书,我是在腾讯云免费申请的,地址为:腾讯云证书管理,此处就不详细描述申请过程了,很简单的

  • Docker

这里要注意,centos中不要直接使用yum install docker,yum中的是旧的docker版本,升级参考我的这篇博文:CentOS更新Docker至最新版本

  • Docker Compose

compose原本是一个第三方公司写的,用来在docker中定义和运行复杂应用的小工具,后来被docker收购了,正式用来替代最早的fig。

通过以下命令安装:

# 下载compose
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname > -s`-`uname -m` -o /usr/bin/docker-compose # 赋予可执行权限,确保compose可执行
chmod +x /usr/bin/docker-compose

添加一个docker network

网站需要占据80端口,显然,我们的服务器不可能只有一个网站,所以部署一个nginx容器是必须的,让这个nginx来监听80以及443端口,再根据域名转发到对应的网站容器。容器之间的通信是通过network的,所以我们需要先添加一个network:

 docker network create nginx-proxy

compose部署WordPress和MySql容器

  • 创建工作目录,创建docker-compose.yml文件:
cd /usr
mkdir myblog && cd myblog
vim docker-compose.yml
  • docker-compose.yml输入以下内容:
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your-mysql-root-password # 在这里输入你要设置的mysql密码
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wp_site:/var/www/html # 定义卷后,compose down之类的操作不会导致你的文章等数据丢失
expose:
- 80
restart: always
environment:
VIRTUAL_HOST: www.thyiad.top,thyiad.top
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro # docker.sock是docker守护进程默认监听的Unix域套接字,容器进程通过它与守护进程进行通信。以后添加新的站点时,nginx将会自动发现并重启服务
- nginx_certs:/etc/nginx/certs:ro # nginx的证书目录,:ro指定为只读
volumes:
db_data:
wp_site:
nginx_certs:
networks:
default:
external:
name: nginx-proxy

添加ssl证书

# 列出所有的卷信息,查找到xxx_wp_certs(xxx是docker自动添加的)
docker volume ls # 查询出xxx_wp_certs的真实路径,一般是在 /var/lib/docker/volumes/xxx_wp_certs/_data
docker volume inspect --format '{{ .Mountpoint }}' xxx_wp_certs # 创建www.thyiad.top.key,并且把ssl证书的xxx.key内容复制粘贴进来
cd /var/lib/docker/volumes/xxx_wp_certs/_data && sudo vim www.thyiad.top.key # 创建www.thyiad.top.crt,并且把ssl证书的xxx.crt内容复制粘贴进来
cd /var/lib/docker/volumes/xxx_wp_certs/_data && sudo vim www.thyiad.top.crt

nginx-proxy如果发现在certs文件夹中存在当前域名的.crt和.key文件,将自动转为https协议

运行wordpress

docker-compose up -d

此时,我们的网站就可以访问了,很简单吧?

参考资料:

傅老板的博客

docker-compose

nginx-proxy

使用docker搭建wordpress的更多相关文章

  1. Docker搭建wordpress博客环境(Centos7)

    Docker搭建wordpress博客环境(Centos7) 升级系统 yum -y update 设置docker库 sudo yum install -y yum-utils sudo yum-c ...

  2. ubuntu系统用docker搭建wordpress

    目标:在docker中搭建wordpress 安装顺序: 首先要有一个云服务器---购买或者自己搭建(本人是自己在主机上装了虚拟机,搭建了一个ubuntu14.04,安装链接:https://www. ...

  3. Docker搭建Wordpress

    搭建 wordpress 1.拉取 wordpress 镜像docker pull wordpress:latest 2.运行 wordpress 镜像 docker run --name wordp ...

  4. 基于docker搭建wordpress博客网站平台

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...

  5. 基于Docker 搭建 wordpress

    在Docker中,一般遵循一个Docker只运行一个应用,这样方便维护. 首先需要将centos 镜像pull到本地,并搭建本地yum仓库 yum仓库地址:http://192.168.2.11:80 ...

  6. 用Docker搭建WordPress

    环境准备 CentOS 安装docker https://yeasy.gitbooks.io/docker_practice/content/install/centos.html docker-co ...

  7. 利用docker搭建WordPress

    步骤一 创建mysql的容器 步骤二 创建wordpress的容器并链接mysql容器的数据库 创建mysql的容器 docker run -d --name mysql -v mysql-data: ...

  8. 用docker快速搭建wordpress博客

      WordPress是一个非常著名的PHP编写的博客平台,发展到目前为止已经形成了一个庞大的网站平台系统.在WP上有规模庞大的插件和主题,可以帮助我们快速建立一个博客甚至网站. 在Windows上可 ...

  9. Docker快速搭建WordPress博客网站

    WordPress WordPress是一个非常著名的PHP编写的博客平台,发展到目前为止已经形成了一个庞大的网站平台系统.在WP上有规模庞大的插件和主题,可以帮助我们快速建立一个博客甚至网站. 在W ...

随机推荐

  1. 汇编编译器(masm.exe)对jmp的相关处理

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  2. python3 第二十一章 - 函数式编程之return函数和闭包

    我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但 ...

  3. js swipeDelete 滑动删除

    先上图看看整体实际效果 看看用法 与参数 默认参数 var defaults = { distance:80, //滑动距离 units:'px', //默认单位 touchStart:functio ...

  4. maven多模块搭建

    此时你会发现父模块含有如下内容 这是因为创建的maven项目都带有样例,比如上图的这张图片 各种artifact都是做什么的呢,@参考文章中给出了答案 怎么创建不带这些呢? 那就创建simple pr ...

  5. BSA Network Shell系列-nexec | runcmd | runscript | scriptutil的异同

    说明下nexec.runcmd.runscript.scriptutil的异同 相同点: 四者都可以在远程机器执行命令.或者调用脚本. 不同点: nexec支持NSH命令,可以执行远程机的本地命令(非 ...

  6. Linux指令--diff

    diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方.diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序的 ...

  7. POI--帮助文档

    1.创建工作簿 (WORKBOOK) HSSFWorkbook wb = new HSSFWorkbook(); FileOutputStream fileOut = new FileOutputSt ...

  8. mysql 出现Duplicate entry ‘xxx’ for key ‘PRIMARY’,一个自增字段达到了上限,

    mysql 出现Duplicate entry 'xxx' for key 'PRIMARY',一个自增字段达到了上限,

  9. oracle用户与表空间操作

    oracle系统用户sys,system , sysman, scott 使用system用户登录[username/password][@server][as sysdba|sysoper]eg: ...

  10. Effective Java 之-----谨慎的覆盖clone方法

    1.概述 如果clone方法返回一个由构造器创建的对象,它就得到有错误的类.因此,如果覆盖了非final类中的clone方法,则应该返回一个通过调用super.clone得到的对象.如果类的所有超类都 ...