使用docker 5分钟搭建一个博客(mysql+WordPress)

一.系统环境

服务器版本 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

image-20220831004045282

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

image-20220831004120610

三.搭建博客

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页面

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

image-20220831012827737

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

image-20220831012851337

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

image-20220831012914143

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

image-20220831012929088

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

image-20220831012951693

点击文章,点击写文章

image-20220831013011521

撰写新文章,点击发布

image-20220831013038054

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

image-20220831013107342

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

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
posted @ 2022-08-31 02:27  人生的哲理  阅读(1780)  评论(1编辑  收藏  举报