《循序渐进学Docker》——2.2 利用Docker搭建个人博客

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本节书摘来自华章出版社《循序渐进学Docker》一书中的第2章,第2.2节,作者李金榜 尹烨 刘天斯 陈纯,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.2 利用Docker搭建个人博客 WordPress是一款功能强大的个人博客系统。

本节书摘来自华章出版社《循序渐进学Docker》一书中的第2章,第2.2节,作者李金榜 尹烨 刘天斯 陈纯,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 利用Docker搭建个人博客

WordPress是一款功能强大的个人博客系统。使用者众多,社区非常活跃,有丰富的插件模板资源。使用WordPress可以快速搭建独立的博客网站。

2.2.1 传统的安装方法

按照传统的安装方法,参考官方的安装文档(http://codex.wordpress.org/zh-cn:安装_WordPress) ,安装步骤如图2-5所示。

WordPress运行环境需要如下软件的支持:

PHP 5.6或更新版本。

MySQL5.6或更新版本。

Apache和mod_rewrite模块。

虽然有“著名的5分钟安装”,但由于需要安装PHP、MySQL和Apache等软件,对于一个经验丰富的老手,安装WordPress也需要一个小时的时间。如果用户对PHP、MySQL和Apache不熟悉,花费一天甚至一周时间估计也不能把WordPress安装成功。

2.2.2 使用Docker进行安装

如果使用Docker来安装WordPress呢?一个完全不知道PHP、MySQL和Apache的小白用户,只通过两条命令就可以把WordPress安装成功,所花费的时间也只有几分钟(主要是从网上下载Docker版的WordPress)。


1dcea92c47c5033e0072cc47c156e64c8506646b

下面让我们来见识一下这两条神奇的Docker指令吧。

双击桌面的“Docker Quickstart”快捷图标,出现命令行界面,输入如下两条指令:

$ docker run --name db --env MYSQL_ROOT_PASSWORD=example -d mariadb
$ docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress

等待下载完成,WordPress就已经安装成功了。

由于要下载的mariadb和WordPress文件比较大,建议尽量使用有线网络替换Wi-Fi无线网络。

安装完成后,如何访问WordPress呢?

在“Docker Quickstart”启动的命令行界面通过输入如下指令获取IP:

$ docker-machine.exe ip
192.168.99.100

然后在浏览器中输入http://192.168.99.100:8080, 会出现如图2-6所示的界面。


444171048a844396e35aae9f5e651fafb4f22521

按照界面的指引,选择网站支持的语言、输入网站标题和用户名密码等信息,配置就完成了,如图2-7所示。


4468e18facd2b406789d9044d78c1a61c8b30333

在浏览器中重新输入http://192.168.99.100:8080 ,一个高端、大气、上档次的个人博客就呈现在我们面前了,如图2-8所示。


a233a5b89f194620d0a8e3e366131143518b0223

在页面的右下角,在“功能”→“登录”中,输入用户名、密码即可进入WordPress的管理界面,对博客进行修改和配置,如图2-9所示。


4eee6008f39a200ea1c7721d260c6f6e6b922edc

至此,一个完整的博客就搭建完成了。

2.2.3 解惑

在上一节,我们通过两条Docker指令,就搭建好一个个人博客网站。大家在惊讶的同时,是不是也很疑惑:那两条Docker指令到底是什么意思?

下面我们就解释一下。先看第一条指令:

docker run --name db --env MYSQL_ROOT_PASSWORD=example –d mariadb

其中:
docker run是一条Docker指令,后面的所有内容“--name db --env MYSQL_ROOT_PASSWORD=example –d mariadb”是Docker指令的参数。

这条指令含义是启动一个mariadb数据库(MySQL数据库的一个分支),数据库的管理员root的密码设置为example,让这个数据库运行在后台,给它起了一个唯一的名字db并进行标示。

这些都是通过参数的指定来实现的。

通过参数最后一部分内容“mariadb”来告诉docker run启动的是一个mariadb数据库。

通过“--env MYSQL_ROOT_PASSWORD=example”参数,设置传入环境变量MYSQL_ROOT_PASSWORD为example,就会在初始化mariadb数据库时root把密码设置为example。

通过“-d”参数,把启动的mariadb数据库设置到后台运行,如果没有该参数,该进程就会在前台运行。

通过“--name db”参数,给这个运行的mariadb数据库起一个名字。假如我们在一台机器上要启动多个mariadb数据库,就可以通过这个名字定位到不同的数据库。

另外一个问题是,我们使用docker run来运行mariadb,但mariadb从哪里来呢?docker run指令首先会从本机检查有没有mariadb程序,如果没有,就会从Docker Hub搜索并下载该程序,Docker Hub就像iPhone的App应用商店。

现在,我们理解了第一条指令是启动一个mariadb数据库。这是WordPress运行环境的三个必需条件之一。接下来看看第二条指令:

docker run –name MyWordPress –-link db:mysql –p 8080:80 -d wordpress

和第一条指令非常类似,通过“docker run”在后台运行WordPress程序。但它多出两个参数“--link”和“-p”。

WordPress是把博客和个性化信息存储到数据库,所以需要和数据库建立连接。在第一条指令中我们已经启动了mariadb数据库,并把它命名为db。在第二条指令中,我们通过“--link db:mysql”参数,把WordPress和数据库建立起了连接。

WordPress是通过监听Apache的80端口对外提供服务。但每台机器的80端口只有一个,假如80端口被其他应用占用了怎么办呢?我们通过“-p 8080:80”参数,把原服务的80端口映射到8080,这样就可以通过访问8080端口来访问服务。上一节我们访问WordPress的URL(http://192.168.99.100:8080) 端口就是8080,原因就在于这里。我们可以通过“-p”把80端口映射到任意端口上。

2.2.4 其他注意事项

360杀毒软件会把Docker识别为病毒而删掉,所以出现类似情况需要把360杀毒软件停掉再重新安装DockerToolBox。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9月前
|
存储 对象存储 Docker
halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx(二)
halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx
353 0
|
9月前
|
关系型数据库 MySQL Java
halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx(一)
halo搭建炫酷个人博客快速部署:docker+docker-compose+nginx
1421 0
|
存储 关系型数据库 jenkins
软件测试|Docker搭建测试用例平台 TestLink
软件测试|Docker搭建测试用例平台 TestLink
186 0
软件测试|Docker搭建测试用例平台 TestLink
|
应用服务中间件 测试技术 nginx
软件测试|Docker 搭建Web服务器nginx
软件测试|Docker 搭建Web服务器nginx
224 0
软件测试|Docker 搭建Web服务器nginx
|
Java 持续交付 Docker
十一、Docker搭建部署SpringCloud微服务项目Demo(二)
十一、Docker搭建部署SpringCloud微服务项目Demo
|
SpringCloudAlibaba 关系型数据库 MySQL
十一、Docker搭建部署SpringCloud微服务项目Demo(一)
十一、Docker搭建部署SpringCloud微服务项目Demo
|
jenkins Java Linux
docker搭建jenkins
自动化部署可以说是项目的必须,其中jenkins可以说是标配了。jenkins在持续集成、持续交付、持续部署方面做得都很好也就是常说的CI、CD。这篇文章就总结下使用docker来搭建jenkins的过程,并记录这中间踩过的坑,防止再踩,同时也为想要学习jenkins的同学提供一点借鉴。
391 0
docker搭建jenkins
|
SQL 存储 关系型数据库
实践-基于Docker搭建的mycat分片应用
实践-基于Docker搭建的mycat分片应用
实践-基于Docker搭建的mycat分片应用
|
NoSQL 关系型数据库 MySQL
基于window10使用docker搭建lnmpr环境
基于window10使用docker搭建lnmpr环境
137 0
基于window10使用docker搭建lnmpr环境
|
SQL 存储 分布式计算
架构设计100-实践03-用Docker搭建Hive
架构设计100-实践03-用Docker搭建Hive
477 0