原文摘自: docker-compose 安装 mysql:5.7.31 - HaimaBlog - 博客园
新建一个启动目录
mkdir /root/docker-tools/mysql
cd /root/docker-tools/mysql
新建文件docker-compose.yml
version: '2.0'
services:
mysql:
container_name: mysql57
image: mysql:5.7.31
restart: always
ports:
- 33006:3306
privileged: true
volumes:
- $PWD/mysql57/log:/var/log/mysql
- $PWD/mysql57/conf/my.cnf:/etc/mysql/my.cnf
- $PWD/mysql57/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_USER: 'test'
MYSQL_PASS: 'test'
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_general_ci',
'--max_connections=3000'
]
networks:
- myweb
networks:
myweb:
driver: bridge
新建脚本文件
#!/bin/bash
mkdir -p $PWD/mysql57/{conf,data,log} #创建本地文件夹
#新建配置文件
tee $PWD/mysql57/conf/my.cnf<<-'EOF'
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
lower_case_table_names=1 #实现mysql不区分大小(开发需求,建议开启)
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
default-time_zone = '+8:00'
# 更改字符集 如果想Mysql在后续的操作中文不出现乱码,则需要修改配置文件内容
symbolic-links=0
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
EOF
初始化目录和配置文件
[root@centos7 mysql]# chmod +x init-mysql.sh docker-compose.yml #加执行权限
[root@centos7 mysql]# ./init-mysql.sh
[root@centos7 mysql]# tree ./ #查看目结构
./
├── docker-compose.yml
├── init-mysql.sh
└── mysql57
├── conf
│ └── my.cnf
├── data
└── log
- PS: 执行./init-mysql.sh可能会报错: "/bin/bash^M: 坏的解释器: 没有那个文件或目录"
- 解决方法
原因:
在Linux中有时候我们将在Windows下编写的脚本拷贝到Linux环境中运行时会出现运行不了的情况.
主要还是Windows的换行符为\r\n,而Linux环境中的换行符号为\n.
解决办法:
使用文本编辑工具将脚本文件所有的\r\n替换成\n既可.
方式二:
在执行脚本时,弹出错误提示:
没有那个文件或目录
这是由于脚本文件在保存时使用了DOS文件格式造成的,可以用vim打开文件,然后执行下列操作:
:set ff=unix
:wq
即可
启动服务
docker-compose up -d
其他操作
docker ps -a #查看启动的服务
docker-compose up -d #后台启动服务
docker-compose -h #帮助命令
docker-compose down #停止并删除服务
docker-compose restart #重启服务
docker-compose stop #停止服务
docker-compose start #停止服务
docker-compose logs #停止日志