Docker compose 容器编排实战系列-部署WordPress

Docker compose文件

文件内容如下,在linux主机上创建wordpress.yml 文件,例如vim /home/wordpress.yml

version: '3.8'

services:
  mysql:
    image: mysql:latest
    container_name: mysql_wordpress
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpressuser
      MYSQL_PASSWORD: youpwd
      MYSQL_ROOT_PASSWORD: youpwd@123
      TZ: Asia/Shanghai
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    ports:
      - "13306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    container_name: wordpress
    depends_on:
      - mysql
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_USER: wordpressuser
      WORDPRESS_DB_PASSWORD: youpwd@123
      WORDPRESS_DB_NAME: wordpress
    ports:
      - "18080:80"
    volumes:
      - wordpress_data:/var/www/html
    restart: always

volumes:
  mysql_data:
  wordpress_data:

 文件详解

  这个配置文件做了以下事情:

  1. 添加了一个名为wordpress的服务,使用最新版本的WordPress镜像。
  2. 设置WordPress容器依赖于MySQL容器,确保在MySQL容器启动后再启动WordPress容器。
  3. 通过环境变量配置WordPress连接到MySQL数据库的参数。
  4. 将WordPress容器的80端口映射到宿主机的18080端口。
  5. 将Mysql容器的3306端口映射到宿主机的13306端口。
  6. 创建一个名为wordpress_data的数据卷,用于持久化WordPress文件和配置。
  7. 添加restart: always以确保WordPress容器在宿主机重启后自动启动。

   配置文件字段详解:

version:
        作用:指定 Docker Compose 文件的版本。
        3.8表示的是最新的版本  
services:
        作用:定义要运行的服务列表。   
mysql 和 wordpress:
        作用:定义服务的名称。该名称可以自定义,根据自己的命名习惯定义即可。
image:
        作用:指定服务的 Docker 镜像。如果本地有镜像,优先使用本地的,本地没有会去                                  dockerhub上拉取,如果dockerhub觉得慢,可以使用国内代理站点
container_name:
        作用:为容器指定一个自定义名称。
environment:
        作用:设置环境变量。
       

         mysql的环境变量

         MYSQL_DATABASE: wordpress  创建数据库
         MYSQL_USER: wordpressuser   创建数据库的非root用户
         MYSQL_PASSWORD: youpwd@123  非root用户密码 ,在使用我的脚本时,记得修改这里,把密码改成你自己的。
         MYSQL_ROOT_PASSWORD: youpwd@123  root 用户的密码
         TZ: Asia/Shanghai  设置数据库的时区

         wordpress的环境变量,设置这个环境变量的好处是,在页面设置的适合就不需要填写数据库资料了

          WORDPRESS_DB_HOST: mysql:3306   连接到数据库容器
          WORDPRESS_DB_USER: wordpressuser  数据库登录名
          WORDPRESS_DB_PASSWORD: youpwd@123  密码
          WORDPRESS_DB_NAME: wordpress 连接的数据库
command:
        作用:覆盖默认的容器启动命令。
        用意:在这里,您可以为 MySQL 设置特定的命令行参数,如认证插件、字符集和排序规则。

        参数详解:

        --default-authentication-plugin=mysql_native_password:
         作用:指定 MySQL 服务使用的默认认证插件。
         用意:较新版本的 MySQL 默认使用 caching_sha2_password 认证插件,但这可能与一些旧版本的客户端不兼容。通过设置这个参数,您可以确保使用传统的 mysql_native_password 认证插件,这可以提高与旧客户端的兼容性。
        --character-set-server=utf8mb4:
        作用:设置 MySQL 服务器默认的字符集。
        用意:utf8mb4 是一个完整的 UTF-8 编码支持,它可以存储任何 Unicode 字符,包括表情符号。这确保了您的数据库可以存储和使用任何现代语言和符号。
        --collation-server=utf8mb4_unicode_ci:
        作用:设置 MySQL 服务器的默认排序规则。
        用意:utf8mb4_unicode_ci 是一个不区分大小写的排序规则,它按照 Unicode 标准对字符进行排序。这对于多语言环境非常重要,因为它可以正确地处理不同语言的字符排序。
ports:
        作用:将容器的端口映射到宿主机的端口,让容器内的服务可以从外部访问
volumes:
        作用:定义数据卷,用于持久化数据和配置文件,确保即使容器被删除,数据也不会丢失
depends_on:
        作用:指定服务之间的依赖关系。
        用意:确保在启动依赖服务之前先启动依赖的服务。在本例中,WordPress 依赖于 MySQL,所以在启动 WordPress 容器之前,必须先启动 MySQL 容器。
restart:
        作用:配置容器的重启策略。
        用意:在这里,将 WordPress 容器的重启策略设置为总是重启,即使宿主机重启。
volumes(在文件底部):
        作用:定义或声明要在多个服务之间共享的数据卷。
        用意:这些卷用于存储 MySQL 和 WordPress 服务的数据,确保它们在容器重启时不会丢失。

如何启动

由于我们不是使用传统的docker-compose.yml 文件命名,而是自定义命名,所以需要使用以下命令启动

docker compose -f wordpress.yml up -d

运行以下命令检查容器是否启动正常

docker compose -f wordpress.yml ps

正常情况下,运行命令后得到的结果如下图所示

启动完成后在你的浏览器上输入

http://ip:18080,即可访问刚刚创建的wordpress博客了。剩下的事情,根据页面提示进行操作就可以了,本文就不再介绍了