version: '3.1'
services:
db:
image: mariadb:mysql-5.7
container_name: mariadb
command: ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci","--default-authentication-plugin=mysql_native_password"]
restart: always
volumes:
- ./data:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
environment:
MYSQL_ROOT_PASSWORD: 111111
MYSQL_USER: malone
MYSQL_PASSWORD : 111111
TZ: Asia/Shanghai
ports:
- 3306:3306
这段 docker-compose.yaml
文件定义了一个 mariadb
服务,使用 MariaDB 镜像并进行了一些配置。以下是逐行解释:
yaml
version: '3.1'
- 定义 Docker Compose 文件的版本为
3.1
。这个版本支持定义多个服务,并允许使用一些高级特性。
yaml
services:
services
是 Compose 文件中的关键字,表示所有的服务都定义在这里。在该文件中只定义了一个服务:db
。
yaml
db:
- 这里定义了一个服务,名为
db
,代表 MariaDB 数据库服务。
yaml
image: mariadb:mysql-5.7
image
指定了 Docker 容器的镜像。这里使用的是mariadb:mysql-5.7
,表示使用 MariaDB 5.7 版本的镜像。如果没有本地镜像,Docker 会从 Docker Hub 拉取。
yaml
container_name: mariadb
container_name
设置了容器的名称为mariadb
,这意味着在 Docker 中查看容器时,容器将以此名称出现。
yaml
command: ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci","--default-authentication-plugin=mysql_native_password"]
command
用于覆盖容器启动时默认执行的命令。这里指定了mysqld
命令及一些参数:--character-set-server=utf8mb4
设置服务器的字符集为utf8mb4
,以支持更多字符(包括表情符号等)。--collation-server=utf8mb4_unicode_ci
设置字符集的排序规则。--default-authentication-plugin=mysql_native_password
使用mysql_native_password
插件进行身份验证,以兼容一些较老的客户端。
yaml
restart: always
restart: always
表示容器如果停止或崩溃,会自动重启,确保服务持续运行。
yaml
volumes:
- ./data:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
volumes
用于将主机的目录或文件挂载到容器内:./data:/var/lib/mysql
将主机当前目录下的data
文件夹挂载到容器中的/var/lib/mysql
,这是 MariaDB 存储数据库数据的位置。这样数据库数据就保存在宿主机上,即使容器删除也不会丢失。/etc/localtime:/etc/localtime:ro
将宿主机的本地时间设置文件挂载到容器中,确保容器与宿主机的时间一致。
yaml
environment:
MYSQL_ROOT_PASSWORD: 111111
MYSQL_USER: malone
MYSQL_PASSWORD : 111111
TZ: Asia/Shanghai
environment
用于设置环境变量:MYSQL_ROOT_PASSWORD: 111111
设置 MariaDB 的 root 用户密码为111111
。MYSQL_USER: malone
创建一个名为malone
的普通用户。MYSQL_PASSWORD: 111111
设置用户malone
的密码为111111
。TZ: Asia/Shanghai
设置容器的时区为Asia/Shanghai
。
yaml
ports:
- 3306:3306
ports
映射容器的端口到宿主机的端口。这里将容器的 3306 端口映射到宿主机的 3306 端口,这样宿主机就可以通过localhost:3306
访问 MariaDB 数据库。
总结:
- 该配置文件使用 Docker Compose 来启动一个 MariaDB 5.7 的容器,配置了时区、字符集、数据卷挂载等内容。容器将运行 MariaDB 数据库并确保数据库服务始终保持运行。通过映射的端口,可以从宿主机访问数据库。