一.系统环境

服务器版本 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. 实践指南:EdgeOne与HAI的梦幻联动

    在当今快速发展的数字时代,安全和速度已成为网络服务的基石.EdgeOne,作为腾讯云提供的边缘安全加速平台,以其全球部署的节点和强大的安全防护功能,为用户提供了稳定而高效的网络体验.而HAI(Hype ...

  2. 单链表实现增删查改等操作(python版本)

    单向链表 : SingleLinkedList 节点类属性: 数据域:value 节点存储的数据 地址域:next 指向下一个节点的地址 链表类属性: 头指针:head 指向链表的第一个节点的地址 尾 ...

  3. Linux之Docker搭建KMS服务器

    前言 在大规模软件部署和管理的过程中,激活授权管理是一项至关重要的任务.微软的KMS(Key Management Service)是一个广泛使用的技术,它使得大型组织能够在本地网络内集中管理Wind ...

  4. c# semaphoreSlim限制线程数

    前言 我们在使用线程的时候,如果多个线程数去访问一个资源的时候,那么是非常影响程序的运行的,因为如果有写的操作,那么需要写锁,那么线程都会堵在同一个地方,那么我们可以限制一下访问一个资源的线程数. 正 ...

  5. Bogus 实战:使用 Bogus 和 EFCore 生成模拟数据和种子数据【完整教程】

    引言 上一章我们介绍了在xUnit单元测试中用xUnit.DependencyInject来使用依赖注入,上一章我们的Sample.Repository仓储层有一个批量注入的接口没有做单元测试,今天用 ...

  6. esp8266,arduino,网页显示dht11温湿度,控制继电器开关,局域网智能家居

    不说了,上代码,用arduino实现esp8266代码 #include <ESP8266WiFi.h> #include <WiFiClient.h> #include &l ...

  7. 力扣602(MySQL)-好友申请Ⅱ:谁有最多的好友(中等)

    题目: 在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请. RequestAccepted 表: (requester_id, accepte ...

  8. 第3章 python 爬虫抓包与数据解析

    第 3章 Python 爬虫抓包与数据解析 3.1 抓包进阶 目前,我们已经会使用 Chrome 浏览器自带的开发者工具来抓取访问网页的数据包,但是这种抓包方法有局限性,比如只能监听一个浏览器选项卡, ...

  9. 龙蜥正式开源 SysOM:百万级实战经验打造!一站式运维管理平台 | 龙蜥技术

    ​简介:SysOM集监控.告警.诊断.修复.安全能力于一体的操作系统运维平台. ​ 文/系统运维 SIG 如果你被突如其来的 OOPS 和满屏奇怪的函数弄得满头问号?机器内存明明很大,却申请不出来内存 ...

  10. Spring Boot Admin 集成诊断利器 Arthas 实践

    简介: Arthas 是 Alibaba 开源的 Java 诊断工具,具有实时查看系统的运行状况:查看函数调用参数.返回值和异常:在线热更新代码:秒解决类冲突问题:定位类加载路径:生成热点:通过网页诊 ...