发布时间:2024-11-23 人气:85次
许多docker应用是需要数据库的,你可以通过docker-compose依赖关系在每个docker容器中都启用一个数据库实例,也可以整个nas就启动一个数据库,有需要的容器连接到该数据库容器即可。
这里我们采用后者,单独部署数据库容器。
1、docker-compose
# 官方文档# https://hub.docker.com/r/linuxserver/mariadb# https://mariadb.com
---version: "3"# 最后编辑时间:2024-03-11services: mariadb: image: mariadb # 镜像地址 container_name: mariadb # 容器名字 hostname: mariadb # 主机名 volumes: - /volume4/docker/mariadb:/config # 配置文件目录 environment: - MYSQL_ROOT_PASSWORD=mariadb # mariadb管理者密码,账户为root,预设为mariadb # 不推荐其他容器都直接使用root管理者账号使用数据库,而是在数据库中创建子账号来访问子数据库 - PUID=1000 - PGID=100 # 用户和用户组权限,ssh中使用“id 用户名”查看,用户组一般为100(users) # 第一个用户而言,群晖为1026,新绿联为1001,linux类系统为1000,后续用户均+1 - UMASK=022 # 默认创建新文件的权限,一般写022 - TZ=Asia/Shanghai # 时区 # - REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql # 远程连接别的服务器上的数据库,需要就写 network_mode: bridge ports: - 3306:3306/tcp # 非WebUI网页界面,直接调用即可 restart: always # 重启策略,可根据实际情况而选择 no/always/unless-stopped/on-failure/on-failure:3
部署成功后开始进行简单配置
2、连接到MariaDB服务器
sudo docker exec -it mariadb bash3、用root账号登录
mysql -u root -p # 密码为上面创建的MYSQL_ROOT_PASSWORD如果出现MySQL command not found,参考文末的容器内安装mysql客户端
4、创建新的数据库
CREATE DATABASE fireflydb; # 数据库名5、创建新用户并赋予数据库权限
CREATE USER 'fireflyiii'@'%' IDENTIFIED BY 'firefly'; # 前面是数据库用户名、后面是对应用户名的数据库密码GRANT ALL PRIVILEGES ON fireflydb.* TO 'fireflyiii'@'%'; # 给新创建的用户所有权限FLUSH PRIVILEGES; # 刷新一下至此数据库容器已创建完毕,后续其他容器如果有需要使用数据库的,每个新的容器我都会创建一个额外的数据库用户和密码,然后再配置上内网ip地址加上上面mariadb容器的3306端口就行。
容器内安装mysql客户端
1、进入mariadb容器
sudo docker exec -it mariadb bash2、安装mysql客户端
apt-get updateapt-get install mysql-client -y