• 使用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
    
  • 相关阅读:
    绘制SVG内容到Canvas的HTML5应用
    HT for Web 3D游戏设计设计--汉诺塔(Towers of Hanoi)
    HT for Web自定义3D模型的WebGL应用
    纯Shading Language绘制飞机火焰效果
    纯Shading Language绘制HTML5时钟
    HTML5版的String Avoider小游戏
    基于HT的CSG功能构建HTML5的3D书架
    HTML5 Web 客户端五种离线存储方式汇总
    基于HTML5的Drag and Drop生成图片Base64信息
    HT for Web可视化QuadTree四叉树碰撞检测
  • 原文地址:https://www.cnblogs.com/renshengdezheli/p/16641546.html
Copyright © 2020-2023  润新知