前言

去年在学习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. 关于 httpUrlConnection 的 setDoOutput 与 setDoInput的区别

    httpUrlConnection.setDoOutput(true) httpUrlConnection.setDoInput(true) 这两个方法在develope的httpUrlConnect ...

  2. python_语法糖_装饰器

    什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog ...

  3. 修改mysqlcharacter_set_database与character_set_server的默认编码(windows环境)

    @参考文章 修改前是这个样子的 mysql> show variables like "%char%";+--------------------------+------- ...

  4. ImmutableMap

    不可变集合,为什么使用它呢?线程安全\更有效的利用内存\可作为常量 ImmutableMap.<String, Object> builder().put("yananList& ...

  5. Tomcat--startup.bat文件

    Tomcat--startup.bat文件 如何启动tomcat,如何关闭tomcat等常规操作,我们应该都很清楚了,但是实际中我们经常会遇到一些恶心的情景,比如说正在我们撸码撸的很高兴的时候,ecl ...

  6. Execption:the database returned no natively generated identity value

    org.hibernate.HibernateException: The database returned no natively generated identity value at org. ...

  7. android 监听返回键

    android监听返回键 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE ...

  8. select标签实现二级联动

    效果如下图所示: 实现的原理:使用onchange事件,原理见代码 html代码: <select id="select" class="sel"> ...

  9. css选择器:nth-child()与:nth-of-type()的差异

    :nth-child()和:nth-of-type()都是Css3中的伪类选择器,其作用相似却又不完全相同. 名词解释 :nth-child()选择器匹配其父元素的第n个子元素,不论元素类型. :nt ...

  10. R语言的神奇之基于向量

    对于大多数需要来说,当我们需要计算两个向量相加时,我们需要分别对这两个向量的元素进行遍历,所以写起来非常的麻烦.下面看看R语言是如何实现的. 首先,将1:5赋予一个名为x的向量 > X<- ...