前言
云主机购买了,域名注册了,网站备案了,Docker环境也准备好了,接下来该部署一个应用看看效果了。我这里优先部署MySql,因为MySql是一个基础中间件,后续的很多应用都会用得上,并且,MySql通过客户端工具也可以比较容易验证部署后的整体效果。
1. 准备
为了方便自动化管理,也方便后续跨服务器部署迁移,我这里的安装方法可能和网上其它地方的有所不同。这里,我提前准备了一个文件夹,主要包含了MySql部署相关的文件,具体结构如下图所示:
下面简单解释说明一下目录中的几个文件的作用。
1.1 my.cnf
这是MySql的配置文件,可以配置优化数据库性能和稳定性的参数等。我的配置如下,也可根据自己的实际情况增减。
[mysqld]
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
character-set-server=utf8mb4
default-storage-engine=INNODB
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
[client]
default-character-set=utf8mb4
1.2 docker-compose.yml
用于容器部署的Docker Compose配置文件,详细参数说明见注释,内容如下:
version: '3'
services:
mysql: # 服务名为mysql
image: mysql
container_name: mysql
ports:
- "3306:3306"
privileged: true # 获取宿主机root权限
restart: always
environment:
- TZ=Asia/Shanghai
- MYSQL_ROOT_PASSWORD=123456 # root账号密码,设置成你自己的密码
volumes:
- ./conf:/etc/mysql/conf.d # 挂载配置文件目录
- ./logs:/var/log/mysql # 挂载日志目录
- ./data:/var/lib/mysql # 挂载数据目录
networks:
- ilaozhu_net
networks:
ilaozhu_net: # 创建网络,如果不存在则创建
driver: bridge
name: ilaozhu_net
其中,
MYSQL_ROOT_PASSWORD
是MySql的root
账号密码,需要替换成你自己的密码。由于这种部署方式,root
支持远程连接,所以密码尽量设置复杂一点;- MySql的默认端口是
3306
,如果希望安全性更高一点,也可以换得随意一点,如52013
; networks
创建了一个名为ilaozhu_net
的网络,并将mysql
服务加入到了该网络中。后续部署的容器也要加入该网络,因为只有在同一网络中,容器之间才可以通过服务名相互访问,而不是必须指定IP。
1.3 start.sh
这个是启动脚本,内容如下:
#!/bin/bash
chmod 644 conf/my.cnf
docker compose up -d
需要注意的是,这里需要将my.cnf
设置成只读,否则,部署完成后,登录MySql时会出现如下警告。
2. 安装
2.1 上传文件
将上面准备好的整个mysql
文件夹通过Sftp
上传到服务器的/data
目录中。
然后查看文件夹是否上传成功。
2.2 执行脚本
执行start.sh
脚本文件之前,需要先输入chmod +x start.sh
命令授予执行权限,否则无法执行,授权成功后文件会变成绿色,然后执行./start.sh
,即可启动服务。
怎么样,简单吧?说一分钟搞定一点也不过分。
3. 验证
3.1 放通端口
从上面的docker-compose.yml
文件中可以看到,MySQL暴露的是3306
端口,如果希望能够通过客户端工具远程操作数据库,则需要放通该端口。处理起来也很简单,登录腾讯云,找服务器->防火墙->添加规则,选择MySQL保存即可,如下图所示:
3.2 客户端连接
部署成功了,可到GitHub上下载sqlyog-community 并安装,通过SQLyog客户端测试一下,也可使用其他你熟悉的客户端工具,效果都差不多。
测试连接成功后,就可以自己建库建表,试着玩起来了。
结语
相较于直接在Linux系统上的安装部署,基于Docker部署就简单了很多,也省去了很多麻烦的初始化和配置工作。虽然,Docker部署的默认配置也有很大的调优空间,但对我们独立开发而言,已经完全足够了,没必要过度设计,后面如果遇到了问题,再进一步优化调整即可。
评论0
暂时没有评论