一.系统环境

服务器版本 docker软件版本 CPU架构
CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64

二.前言

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

mysql镜像的环境变量的解释可以去网易云镜像中心查看https://c.163yun.com/hub#/library/repository/info?repoId=3553

WordPress镜像的环境变量的解释:

三.搭建博客

3.1 创建wordpress和mysql容器

1.提前拉取wordpress和mysql的镜像

[root@k8smaster ~]# docker pull hub.c.163.com/library/wordpress:latest

[root@k8smaster ~]# docker pull hub.c.163.com/library/mysql:latest

#需要准备的wordpress和mysql镜像
[root@k8smaster ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hub.c.163.com/library/wordpress latest dccaeccfba36 4 years ago 406MB
hub.c.163.com/library/mysql latest 9e64176cd8a2 4 years ago 407MB

2.查看wordpress镜像的创建历史,可以看到数据卷挂载的目录:VOLUME [/var/www/html],镜像开放的端口为 EXPOSE 80/tcp

[root@k8smaster ~]# docker history hub.c.163.com/library/wordpress:latest
IMAGE CREATED CREATED BY SIZE COMMENT
dccaeccfba36 4 years ago /bin/sh -c #(nop) CMD ["apache2-foreground"] 0B
<missing> 4 years ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B
<missing> 4 years ago /bin/sh -c #(nop) COPY file:db1f48c4963a4352… 6.85kB
<missing> 4 years ago /bin/sh -c set -ex; curl -o wordpress.tar.g… 23.9MB
<missing> 4 years ago /bin/sh -c #(nop) ENV WORDPRESS_SHA1=5376cf… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV WORDPRESS_VERSION=4.8… 0B
<missing> 4 years ago /bin/sh -c #(nop) VOLUME [/var/www/html] 0B
<missing> 4 years ago /bin/sh -c a2enmod rewrite expires 60B
<missing> 4 years ago /bin/sh -c { echo 'opcache.memory_consumpt… 171B
<missing> 4 years ago /bin/sh -c set -ex; apt-get update; apt-g… 5.9MB
<missing> 4 years ago /bin/sh -c #(nop) CMD ["apache2-foreground"] 0B
<missing> 4 years ago /bin/sh -c #(nop) EXPOSE 80/tcp 0B
<missing> 4 years ago /bin/sh -c #(nop) WORKDIR /var/www/html 0B
<missing> 4 years ago /bin/sh -c #(nop) COPY file:24613ecbb1ce6a09… 1.35kB
<missing> 4 years ago /bin/sh -c #(nop) ENTRYPOINT ["docker-php-e… 0B
<missing> 4 years ago /bin/sh -c #(nop) COPY multi:3775aa358569083… 5.92kB
<missing> 4 years ago /bin/sh -c set -xe && buildDeps=" $PHP_EX… 32.5MB
<missing> 4 years ago /bin/sh -c #(nop) COPY file:207c686e3fed4f71… 587B
<missing> 4 years ago /bin/sh -c set -xe; fetchDeps=' wget ';… 12.9MB
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_SHA256=c464af6124… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_URL=https://secur… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_VERSION=5.6.31 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV GPG_KEYS=0BD78B5F9750… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_LDFLAGS=-Wl,-O1 -… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_CPPFLAGS=-fstack-… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_CFLAGS=-fstack-pr… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_EXTRA_CONFIGURE_A… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_EXTRA_BUILD_DEPS=… 0B
<missing> 4 years ago /bin/sh -c { echo '<FilesMatch \.php%sSourceCode%gt;'; … 237B
<missing> 4 years ago /bin/sh -c set -ex && . "$APACHE_ENVVARS" … 33B
<missing> 4 years ago /bin/sh -c a2dismod mpm_event && a2enmod mpm… 68B
<missing> 4 years ago /bin/sh -c set -ex && sed -ri 's/^export (… 1.92kB
<missing> 4 years ago /bin/sh -c #(nop) ENV APACHE_ENVVARS=/etc/a… 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV APACHE_CONFDIR=/etc/a… 0B
<missing> 4 years ago /bin/sh -c apt-get update && apt-get instal… 6.99MB
<missing> 4 years ago /bin/sh -c mkdir -p $PHP_INI_DIR/conf.d 0B
<missing> 4 years ago /bin/sh -c #(nop) ENV PHP_INI_DIR=/usr/loca… 0B
<missing> 4 years ago /bin/sh -c apt-get update && apt-get install… 200MB
<missing> 4 years ago /bin/sh -c #(nop) ENV PHPIZE_DEPS=autoconf … 0B
<missing> 4 years ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 4 years ago /bin/sh -c #(nop) ADD file:a023a99f7d01868b1… 123MB

3.创建mysql的root密码和数据库

使用MySQL镜像创建容器:

  • --name指定容器名称;
  • -e指定环境变量,-e MYSQL_ROOT_PASSWORD指定MySQL的root密码,-e MYSQL_DATABASE指定创建的数据库名称;
  • -v /data:/var/lib/mysql进行数据卷挂载,宿主机目录为/data,MySQL容器目录为/var/lib/mysql
[root@k8smaster ~]# docker run -dit --restart=always --name=mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -v /data:/var/lib/mysql hub.c.163.com/library/mysql:latest
62dc266d58a45a2d19889267af2805fdd429e3033031407bd11111b20ede87ff

数据卷挂载之后,宿主机的/data/目录里就有MySQL容器数据目录里的内容了

[root@k8smaster ~]# ls /data/
auto.cnf ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 mysql performance_schema sys

获取mysql容器的IP地址:172.17.0.4

[root@k8smaster ~]# docker inspect mysql | grep -i ipaddr
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",

4.创建wordpress容器,并连接mysql对应的数据库

使用wordpress镜像创建容器:

  • --name指定容器名称
  • -v /blog:/var/www/html进行数据卷挂载,宿主机目录为/blog,wordpress容器目录为/var/www/html
  • -e WORDPRESS_DB_HOST=172.17.0.4指定MySQL数据库的IP地址, -e WORDPRESS_DB_USER=root指定使用MySQL的root用户连接MySQL, -e WORDPRESS_DB_PASSWORD=123456说明MySQL的密码为123456, -e WORDPRESS_DB_NAME=wordpress指定连接MySQL的wordpress数据库
  • -p 80:80进行端口映射,宿主机端口为80,容器端口为80,意思是把容器的80端口映射到物理机的80端口,访问宿主机的IP:80即可访问wordpress容器
[root@k8smaster ~]# docker run -dit --restart=always --name=wordpress -v /blog:/var/www/html -e WORDPRESS_DB_HOST=172.17.0.4 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e WORDPRESS_DB_NAME=wordpress -p 80:80 hub.c.163.com/library/wordpress:latest
8360d3c2c109d6a4ad05361d5dfe50dbad6b0642c7b8e871bae4396c8cb71f48

5.查看容器,可以看到wordpress和mysql容器正在运行

[root@k8smaster ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8360d3c2c109 hub.c.163.com/library/wordpress:latest "docker-entrypoint.s…" 53 seconds ago Up 48 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp wordpress
62dc266d58a4 hub.c.163.com/library/mysql:latest "docker-entrypoint.s…" 8 minutes ago Up 8 minutes 3306/tcp mysql

3.2 在wordpress界面设置个人博客信息

因为wordpress容器进行了端口映射,访问宿主机IP:80即可访问wordpress,在浏览器打开http://192.168.110.137/,出现如下wordpress页面

语言选择简体中文,点击继续

设置站点标题,用户名,密码,email,安装WordPress

WordPress安装成功之后,点击登录

根据你设置的账号进行登录

此时个人博客就搭建完毕了

点击文章,点击写文章

撰写新文章,点击发布

此时就可以看到我们写的文章了

到此,博客搭建完毕,如果要给外界访问,则需要申请云主机和域名。

3.3 WordPress容器创建命令的简化版本

1.删除wordpress容器

[root@k8smaster ~]# docker rm -f wordpress
wordpress

2.创建wordpress容器

--link=mysql:mysql链接MySQL容器,并起别名为mysql

--link, 可以使新生成的容器链接到已在运行的容器,具体使用用法可以看之前博客《docker --link容器互联》https://www.cnblogs.com/renshengdezheli/p/16640281.html

[root@k8smaster ~]# docker run -dit --restart=always --name=wordpress --link=mysql:mysql -v /blog:/var/www/html -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=123456 -e WORDPRESS_DB_NAME=wordpress -p 80:80 hub.c.163.com/library/wordpress:latest
2c3d943c7c153b74d7e91f4e0f9f2043d7b39d9be4051ca851892c68f961fab9 [root@k8smaster ~]# docker rm -f wordpress
wordpress #这是简化版的命令
[root@k8smaster ~]# docker run -dit --restart=always --name=wordpress --link=mysql:mysql -v /blog:/var/www/html -p 80:80 hub.c.163.com/library/wordpress:latest
b25333f5f51f01199c50ab8971baf74a1a99cb25b1eba0d646531cd191abfdd7

使用docker 5分钟搭建一个博客(mysql+WordPress)的更多相关文章

  1. 运用BT在centos下搭建一个博客论坛

    在日常的工作和学习中,我们都很希望有自己的工作站,就是自己的服务器,自己给自己搭建一个博客或者是论坛,用于自己来写博客和搭建网站论坛.现在我们就用一个简单的方法来教大家如何30分钟内部署一个博客网站. ...

  2. 【网站开发】在新浪SAE上搭建一个博客

    概述 在新浪SAE上搭建一个博客 1.访问新浪SAE站点 http://sae.sina.com.cn/ 2.注册新浪SAE 3.选择应用仓库 4.选择WordPress 5.安装WordPress ...

  3. 使用Hexo快速搭建一个博客,并部署到github

    本文旨在记录一下我在通过hexo搭建一个博客,并将其部署在github上面的过程,也供我自己在以后的使用过程中能够快速学习和参考.需要看更详细或者官方文档的可以点击Hexo官方文档进行查看. 安装前提 ...

  4. Hexo博客框架10分钟搭建个人博客

    首先是先给大家打个招呼 最近看网上看到了很多的的关于搭建博客的视频,我自己也学着自己搭建了一个博客"我自己的博客链接"(欢迎大家来我的博客跟我深入交♂流),今天我把搭建的过程记录下 ...

  5. 使用 Github + Hexo 从 0 搭建一个博客

    最近有几位同学在公众号后台留言问我的博客站是怎么建站的,思来想去,还是写一篇从 0 开始吧. 前置准备 我们先聊一下前置准备,可能很多同学一听说要自己搭一个博客系统,直接就望而却步.不得有台服务器么, ...

  6. Docker DevOps实战: 一分钟搭建Hexo博客

    原文地址:https://yq.aliyun.com/articles/53772 Hexo博客 Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown解析文章,在几秒内,即可利 ...

  7. Go搭建一个博客系统

    go语言环境就不用多说了,版本肯定越高越好,这里用go1.10 先放着

  8. Docker + WordPress搭建个人博客

    WordPress是目前非常受欢迎的开源博客系统,今天使用Docker + WordPress搭建个人博客,整个过程非常丝滑. 搭博客先要准备域名和服务器,昨天在阿里云买了个.top的域名花了5块钱( ...

  9. 3分钟搭建一个网站?腾讯云Serverless开发体验

    作为一个开发者,应该都能理解一个网站从开发到上线,要经过很多繁琐的步骤. 编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间. 作为一个不精通代码的业务玩家, ...

  10. 《Hexo+github搭建个人博客》

    <Hexo+github搭建个人博客> 文/冯皓林 完稿:2016.4.22-2016.4.23 注意:本节教程只针对Windows用户.本教程由无人赞助,赞助写出. <Hexo+g ...

随机推荐

  1. HMS Core机器学习服务实现同声传译,支持中英文互译和多种音色语音播报

    当用户有跨语种交流或音频内容翻译的需求时,应用需要能自动检测语音内容再输出为用户需要的语言文字. HMS Core机器学习服务提供同声传译能力,同声传译实现将实时输入的长语音实时翻译为不同语种的文本以 ...

  2. 模拟SQLserver死锁现象

    SQL Server死锁是指两个或多个事务相互等待对方持有的资源而无法继续执行的情况.当两个或多个事务都持有一些资源并且试图获取其他事务持有的资源时,可能会发生死锁.这种情况下,每个事务都在等待另一个 ...

  3. 第十八篇:Django进级

    一.Django工程创建 二.Django 的 CBV和FBV 三.模板语言循环字典 四.Django基于正则表达式的URL 五.Django对应的路由名称 六.Django路由分发 七.Django ...

  4. node 父子进程传递对象

    背景 node的父子进程中可以传递这是肯定的,但是传递对象,这是一个稀奇的地方. code 发送 server 对象 sendHandle 参数可用于将一个 TCP server 对象句柄传给子进程, ...

  5. 快速上手Linux核心命令

    Linux 的重要性不用我多说了吧,大多数互联网公司,服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统. 只有熟练掌握Linux核心命令,在使用起来我们才会得心应 ...

  6. 我是如何搭建ChatGPT并嵌入到微信公众号的?

    前言 体验方式:薇辛搜索 龚众号 [程序员Jason],关注并点击发消息,点菜单ChatGPT 然后翻到最下面点[阅读原文]就可以了. ChatGPT对某些国家是不提供服务的,所以一般是用不了,除非是 ...

  7. easyx的使用,鼠标交互(3.0)

    本文从B站学习,借鉴: 学习视频地址:鼠标操作(旧版)_哔哩哔哩_bilibili

  8. 安装两个jdk Windows系统

    安装两个jdk Windows系统 本来装的是Java 8,现在有一个新的项目要到手上,需要的环境是Java 7,想着还有别的要用,所以就装两个在电脑上 jdk的下载直接去官网就行,不知道怎么下就看这 ...

  9. Sample HL7 ADT Messages

    Here are a few sample ADT messages for testing that I've picked up over time. I may edit this post l ...

  10. 中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结

    简介: 中仑网络在 2022 年完成了服务框架从 Dubbo 2 到 Dubbo 3 的全站升级,深度使用了应用级服务发现.Kubernetes 原生服务部署.服务治理等核心能力.来自中仑网络的技术负 ...