wordpress+Dockerfile+docker-compose 自动化编排个人博客系统服务
发布日期:2021-05-16 13:53:03 浏览次数:24 分类:精选文章

本文共 3387 字,大约阅读时间需要 11 分钟。

Docker容器持久化及WordPress搭建个人博客系统

一、Docker容器数据的持久化

数据是软件的生命,即使容器删了,数据也不能丢,所以我们要实现数据的持久化。

当我们使用以下命令启动容器时:

docker run -d -e MYSQL_ROOT_PASSWORD=root 容器ID

在mysql里创建数据库后,删除了容器后,数据库也不复存在了。

为解决这个问题,Docker为我们提供了三个不同的方式来实现数据的持久化:Volumebind mounttmpfs。其中,Volume是最佳选择。

使用Volume挂载卷

Volume是存在一个或多个容器中特定文件或文件夹,这个目录能够独立于联合文件系统的形式在宿主机中存在,并为数据的共享和持久提供便利。Volume能在不同的容器之间共享和重用,且对Volume中的数据操作不会影响到镜像本身。

原理:将文件从容器中挂载到外面,可以理解为在外面创建一个文件的快捷方式。例如,将mysql存数据的文件 /var/lib/mysql 挂载到centos中。

Docker默认在宿主机上有一个特定的区域 /var/lib/docker/volumes 存放Volume挂载卷。
Volume是通过docker volume进行管理,如创建、删除等操作。

Docker Volume命令

docker volume ls

查看所有的挂载卷,默认名字是一串无规则的数字。

docker volume rm 挂载卷名

删除一个挂载卷。

docker volume rm -f $(docker volume ls -q)

删除所有能查到的不在使用的挂载卷。

注意:使用中的挂载卷是使用不了的。

MySQL使用Volume

mysql默认是有Volume的,挂载卷名是一串无规则的数字:

docker run -d -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql镜像ID

在mysql里创建一个test的数据库,然后删除容器,但不删除挂载卷。再启动一个mysql时,test数据库仍然存在。

二、实现WordPress搭建个人博客系统

WordPress是帮助客户打造个人网站的公司。拉取WordPress镜像,WordPress里有一套完整的个人博客系统。

部署

拉取WordPress镜像

在docker hub查找WordPress的拉取命令:

docker pull wordpress

并查看如何使用WordPress。

WordPress连接数据库

WordPress需要连接mysql作为个人博客系统的数据库,并且要创建一个WordPress数据库。

docker run -d --name mysql -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql镜像ID

启动一个mysql数据库。

docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 wordpress镜像ID

访问浏览器输入 192.168.160.10:8080 访问并注册登录。

三、Dockerfile实现自定义镜像

Dockerfile的作用

当我们正常启动容器并导入数据时,步骤比较繁琐,使用Dockerfile可以扩展基础镜像,将其作为我们的自定义镜像。以mysql为例:正常启动步骤包括启动容器、登录mysql、导入数据文件、设置远程连接权限。

自定义一个MySQL镜像

准备需要的文件

  • 创建Dockerfile文件:
  • #1、设置base image
    FROM mysql:5.7
    #2、设置免密码登录
    ENV MYSQL_ALLOW_EMPTY_PASSWORD=yes
    #3、将数据文件拷贝到镜像中
    COPY easybuy.sql /mysql/easybuy.sql
    #4、将配置远程连接权限的文件拷贝到镜像中
    COPY privileges.sql /mysql/privileges.sql
    #5、将启动文件拷贝到镜像中
    COPY setup.sh /mysql/setup.sh
    #6、设置容器启动时执行的命令
    CMD ["sh","/mysql/setup.sh"]
    1. 创建远程连接权限文件(为.sql文件),并放在同一目录下:
    2. use mysql;
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
      flush privileges;
      1. 创建启动文件(shell脚本)setup.sh
      2. #!/bin/bash
        set -e
        echo `service mysql status` #查看mysql容器启动状态
        echo '1、启动mysql'
        service mysql start
        sleep 3
        echo `service mysql status` #再次查看mysql状态
        echo '2、开始导入数据'
        mysql
        1. 编写Dockerfile文件。
        2. 构建镜像

          docker build -t dean/mysql-easybuy:1.0

          启动自定义镜像

          docker run -d -e MYSQL_ROOT_PASSWORD=root 镜像ID

          Dockerfile的实际执行过程

        3. Dockerfile在基础镜像上加入需要的文件,封装为新的镜像。
        4. docker run运行容器时,实质在执行setup.sh文件,setup文件里做导入数据库,设置远程连接权限这些工作。
        5. 四、Docker Compose自动化编排个人博客系统服务

          Docker Compose是个啥

          Docker Compose是Docker中的一个工具。多容器的服务体系非常麻烦,需要我们一个一个的取启动、停止管理容器。Docker Compose可以起到一个容器管家的作用,多个容器组成一个整体,能够实现同时启动,同时停止。

          Docker Compose使用

          下载 Docker Compose

          检查是否安装:

          docker-compose --version

          权限不足时:

          chmod +x /usr/local/bin/docker-compose

          未安装时:

          curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

          创建 docker-compose.yml文件

          在wordpress文件夹里创建 docker-compose.yml:

          version: "3"
          services:
          wordpress:
          image: wordpress
          ports:
          - "8080:80"
          links:
          - mysql
          environment:
          WORDPRESS_DB_HOST: mysql
          WORDPRESS_DB_PASSWORD: root
          mysql:
          image: mysql:5.7
          ports:
          - "3306:3306"
          environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: wordpress
          volumes:
          - wordpress-data:/var/lib/mysql
          volumes:
          wordpress-data:

          启动 Docker Compose

          docker-compose up -d

          访问浏览器输入 192.168.160.10:8080 已注册登录。

    上一篇:使用docker搭建redis集群和mysql集群
    下一篇:Docker常用命令使用演示

    发表评论

    最新留言

    关注你微信了!
    [***.104.42.241]2025年05月05日 03时13分16秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章