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:
文件详解
这个配置文件做了以下事情:
- 添加了一个名为wordpress的服务,使用最新版本的WordPress镜像。
- 设置WordPress容器依赖于MySQL容器,确保在MySQL容器启动后再启动WordPress容器。
- 通过环境变量配置WordPress连接到MySQL数据库的参数。
- 将WordPress容器的80端口映射到宿主机的18080端口。
- 将Mysql容器的3306端口映射到宿主机的13306端口。
- 创建一个名为wordpress_data的数据卷,用于持久化WordPress文件和配置。
- 添加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博客了。剩下的事情,根据页面提示进行操作就可以了,本文就不再介绍了