docker-compose部署MySQL

一.安装docker(离线安装)

1.上传并解压安装包,可点此下载

tar -Pzxvf docker-19.03.8.tgz
cp docker/* /usr/bin/

2.注册docker服务为系统服务

cat <<EOF >> /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF

3.设置docker服务文件权限

# 设置文件权限
chmod +x /etc/systemd/system/docker.service

4.配置容器存储地址(可选)

vim /etc/docker/daemon.json

放入以下内容

{
  "data-root": "/data/docker"
}

注:以上文件将docker的容器存放位置设置为/data/docker/,此目录可修改或删除,若使用请确保该目录存在

重载配置文件

systemctl daemon-reload

二.启动docker

1.启动docker

systemctl start docker

2.设置开机自启

systemctl enable docker.service

3.验证

systemctl status docker

4.查看版本

docker -v

5.配置国内镜像源

vim /etc/docker/daemon.json
{
  "data-root": "/data/docker",
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

若使用私有仓库地址(harbor、nexus),请添加如下内容到daemon.json

"insecure-registries": ["IP:port"]

注:daemon.json修改后需要重载

systemctl daemon-reload
systemctl restart docker

三.安装docker-compose(离线安装)

1.github下载官方安装包,可以点此跳转

2.移动安装包

sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

3.授权docker-compose权限

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

4.查看版本

docker-compose -v

四.部署MySQL

1.创建存放目录

cd /data
mkdir docker-compose && cd docker-compose
mkdir mysql && cd mysql

2.创建挂载目录

cd /data/docker-compose/mysql
mkdir -p /data/docker-compose/mysql/data
mkdir -p /data/docker-compose/mysql/config

3.新建配置文件

vim /data/docker-compose/mysql/config/my.cnf

放入以下内容

[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

4.编写docker-compose文件

vim /data/docker-compose/mysql/docker-compose.yml

放入以下内容

# 放入以下内容
version: '3'
services:
  mysql:
    image: mysql:8.0.31
    restart: always
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      TZ: Asia/Shanghai
    ports:
      - 3306:3306
    volumes:
      - /data/docker-compose/mysql/data:/var/lib/mysql
      - /data/docker-compose/mysql/config/my.cnf:/etc/mysql/my.cnf
    command:
      --max_connections=1000
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --default-authentication-plugin=mysql_native_password

5.启动mysql容器

cd /data/docker-compose/mysql/
docker-compose up -d
<think>好的,用户想知道如何使用docker-compose部署MySQL数据库。我需要根据提供的引用内容来整理步骤,同时确保回答符合系统级指令的要求。首先,用户提供的引用中有几个相关的信息,比如引用3提到了docker-compose快速部署MySQL的步骤,引用2中有一个Dockerfile的例子,但可能更相关的应该是直接使用docker-compose.yml文件。引用1和引用5提到了拉取镜像和初始化数据库的方法,这些都需要整合到回答中。 首先,我需要明确用户的需求是通过docker-compose部署MySQL,所以需要创建一个docker-compose.yml文件。根据引用3中的步骤,用户需要安装dockerdocker-compose,然后拉取MySQL镜像,编写docker-compose.yml,启动服务,并可能进行初始化。 接下来,引用2中的Dockerfile可能不是必须的,因为用户更倾向于使用docker-compose来管理服务。但引用2中的ADD指令可以用来初始化数据库,这可能对应docker-compose中的volumes或者entrypoint配置。不过更常见的是将初始化脚本放在/docker-entrypoint-initdb.d目录下,这样容器启动时会自动执行这些SQL脚本,如引用5提到的初始化数据库的方法。 然后,引用5中还提到了设置权限和密码校验,这可能需要在MySQL配置中进行设置,或者在docker-compose文件中通过环境变量来配置。比如MYSQL_ROOT_PASSWORD环境变量是必须的,用来设置root用户的密码。 现在,我需要将这些信息整合成一个步骤指南。步骤可能包括: 1. 安装DockerDocker Compose:根据引用3,用户需要先安装dockerdocker-compose,但用户可能已经安装好了,所以可以简要提及。 2. 创建项目目录和docker-compose.yml文件:这里需要编写正确的docker-compose配置,指定MySQL镜像版本,设置环境变量如root密码,挂载数据卷持久化数据,以及初始化脚本的位置。 3. 初始化数据库:根据引用2和5,用户可能需要将SQL文件放入指定目录,以便容器启动时执行。比如在docker-compose中通过volumes挂载一个本地目录到容器的/docker-entrypoint-initdb.d下,这样容器启动时会自动执行该目录下的SQL文件。 4. 启动服务:使用docker-compose up命令启动容器,可能还需要设置后台运行,如使用-d参数。 5. 验证和连接:进入容器内部或者远程连接,确保数据库正常运行。 此外,需要注意用户提供的引用中有一些具体的例子,比如引用2中的Dockerfile可能不是直接相关的,但其中的ADD指令可以转化为docker-compose中的volumes配置。引用5中的权限设置和密码校验需要在MySQL配置中处理,可能通过环境变量或者初始化脚本实现。 在整合这些步骤时,需要确保LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,但在这个问题中可能涉及较少数学公式,更多的是代码块和配置文件的展示。所以重点放在代码块的正确格式上,比如使用三个反引号包裹代码,并注明语言类型。 可能还需要生成相关问题,比如如何持久化数据、如何初始化数据库、如何设置权限等,这些可以从引用内容中提取。 最后,确保回答中引用的引用标识正确添加,比如在提到拉取镜像时引用1,初始化数据库时引用2和5,docker-compose配置引用3等。</think>### 通过 docker-compose 部署 MySQL 数据库的步骤 #### 1. 安装 DockerDocker Compose 确保已安装 DockerDocker Compose。验证安装是否成功: ```bash docker --version docker-compose --version ``` 若显示版本信息则正常[^1]。 #### 2. 编写 `docker-compose.yml` 文件 创建项目目录并编写配置文件: ```yaml version: '3.8' services: mysql: image: mysql:8.0.36 # 指定镜像版本[^3] container_name: my-mysql environment: MYSQL_ROOT_PASSWORD: your_root_password # 设置root密码[^5] MYSQL_DATABASE: nacos # 可选:初始化数据库 MYSQL_USER: asa # 可选:创建用户 MYSQL_PASSWORD: asa_password volumes: - ./mysql_data:/var/lib/mysql # 数据持久化 - ./init-scripts:/docker-entrypoint-initdb.d # 初始化SQL脚本[^2][^5] ports: - "3306:3306" # 暴露端口 restart: always ``` #### 3. 添加初始化脚本 在本地目录 `./init-scripts` 中放置 SQL 文件(如 `nacos-mysql.sql`),容器启动时会自动执行: ```sql -- 示例:创建用户并授权 GRANT ALL PRIVILEGES ON asa.* TO 'asa'@'%'; FLUSH PRIVILEGES; ``` #### 4. 启动服务 通过以下命令启动容器: ```bash docker-compose up -d # 后台运行[^3] ``` #### 5. 验证与连接 - **进入容器内部**: ```bash docker exec -it my-mysql mysql -uroot -p ``` - **远程连接**: 使用 MySQL 客户端工具连接 `主机IP:3306`,用户名为 `root`,密码为 `your_root_password`[^3]。 #### 关键配置说明 - **数据持久化**:`volumes` 将容器内的 `/var/lib/mysql` 映射到本地目录,避免数据丢失[^3]。 - **初始化脚本**:`/docker-entrypoint-initdb.d` 目录下的 `.sql` 或 `.sh` 文件会在首次启动时按字母顺序执行[^5]。 - **权限设置**:通过 SQL 脚本或环境变量定义用户权限,确保安全性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值