1 前期准备
- Mysql数据库
- docker
- docker-compose
2 搭建过程
2.1 配置数据库
创建数据库
create schema codimd default character set utf8 collate utf8_general_ci;
创建用户
create user '[用户名称]'@'%' identified by '[用户密码]';
用户授权
grant select,insert,update,delete,create on *.* to codimd_user;
立即生效
flush privileges;
检查:
查看用户是否可以从任意 IP 连接
use mysql;
select host, user from user;
并且还要注意 3306 端口的开放问题:
vi /etc/mysql/mysql.conf.d/mysqld.cnf
将其中的bind-address = 127.0.0.1
前面,加个#
,注释掉即可。
2.2 搭建 codimd
创建 docker-compose.yml
version: "3"
services:
codimd:
image: nabo.codimd.dev/hackmdio/hackmd:2.0.1
environment:
- CMD_DB_URL=mysql://codimd:codimd123456@172.18.0.1:3306/codimd
- CMD_USECDN=false
ports:
- "3000:3000"
volumes:
- upload-data:/home/hackmd/app/public/uploads
restart: always
volumes:
upload-data: {}
CMD_DB_URL–>>数据库连接协议://用户名:密码@数据库主机:数据库端口/数据库名
另外注意数据库连接协议中的IP地址,需要填写宿主机的IP,使用命令:
ip addr show docker0
在Linux下安装Docker的时候,会在宿主机安装一个虚拟网卡docker0,我们可以使用宿主机在docker0上的IP地址来代替localhost。
具体文章看这里: Docker容器访问宿主机网络
执行命令搭建
docker-compose up -d
2.3 检查是否成功开启
查看容器是否打开:
docker ps
查看连接日志:
docker logs -f -t --tail 10 codimd_codimd_1
看到如下,便说明搭建成功。
HTTP Server listening at 0.0.0.0:3000
访问http://ip:3000
。
如果出现报错 ERROR: ALTER command denied to user ‘codimduser’@’172.18.0.2’ for table ‘Notes’。
那可能是权限的问题,再执行如下命令即可。
GRANT ALL PRIVILEGES ON *.* TO 用户名@'%' IDENTIFIED BY '密码';
3 总结
搭建过程中,主要问题还是在于 Mysql,当日志中显示数据库 3306 端口拒绝连接时,检查一下 3306 是否对外开放。