docker实践之docker-compose部署mysql方式

 更新时间:2023年08月24日 10:25:18   作者:程序员学编程  
这篇文章主要介绍了docker实践之docker-compose部署mysql方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前面用golang写了一个api server,但是要用到一些测试数据,又要方便给别人,想来用docker部署环境最简单了。

只需要简单执行两个命令就可以搞定了。

博主的环境是windows然后在windows里面部署一个centos7的虚拟机。

在虚拟机里面安装部署了docker。

1、安装部署docker

在linux下面只需简单的一个命令:

yum install docker

其他的系统类似。

2、编写docker-compose文件

version: '2'
services:
    mysql:
        network_mode: "host"
        environment:
            MYSQL_ROOT_PASSWORD: "yourpassword"
            MYSQL_USER: 'test'
            MYSQL_PASS: 'yourpassword'
        image: "docker.io/mysql:latest" 
        restart: always
        volumes:
            - "./db:/var/lib/mysql"
            - "./conf/my.cnf:/etc/my.cnf"
            - "./init:/docker-entrypoint-initdb.d/"

这里稍微解释一下,其中,network_mode为容器的网络模式,一般自己测试用host模式就可以了。

MYSQL_ROOT_PASSWORD 为数据库的密码,也就是root用户的密码。

MYSQL_USER MYSQL_PASS 另外一个用户名和密码。image为你拉取镜像的地址和版本,当然也可以换成自己的镜像仓库,这里使用官方的。

volumes里面的参数为映射本地和docker容器里面的文件夹和目录。

  • ./db 用来存放了数据库表文件 
  • ./conf/my.cnf 存放自定义的配置文件 
  • ./init 存放初始化的脚本

ports 为映射主机和容器的端口。

写好docker-compose.yml后把相应的文件夹建好,当然也可以换成你自己的。

下面的是博主的文件夹结构。

root@localhost mysql # tree
.
├── conf
│   └── my.cnf
├── db
├── docker-compose.yml
└── init
    └── init.sql

3、编写配置文件和初始化文件

root@localhost conf # cat my.cnf 
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

这里的配置文件只是一个简单的举例,大家需要根据自己的配置来更改。

root@localhost init # cat init.sql 
use mysql;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
create database test;
use test;
create table user
(
    id int auto_increment primary key,
    username varchar(64) unique not null,
    email varchar(120) unique not null,
    password_hash varchar(128) not null,
    avatar varchar(128) not null
);
insert into user values(1, "zhangsan","test12345@qq.com","passwd","avaterpath");
insert into user values(2, "lisi","12345test@qq.com","passwd","avaterpath");
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpassword'; 

这一句比较重要,放开root登入权限,如果你要在其他的主机用root用户登入到数据库就需要写入这句话。

其他的语句就是建表操作和插入数据的操作了。

4、启动数据库

root@localhost mysql # docker-compose pull
.......下载镜像过程
root@localhost mysql # docker-compose up -d
mysql_mysql_1_234be9b015e4 is up-to-date
root@localhost mysql # 

此处需要在存放docker-compose.yml的文件夹进行操作。

5、检查初始化的数据

root@localhost mysql # docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS               NAMES
cffe8d56f222        docker.io/mysql:latest   "docker-entrypoint..."   21 minutes ago      Up 21 minutes                           mysql_mysql_1_234be9b015e4
root@localhost mysql # docker exec -it cffe8d56f222 bash
root@localhost:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.13 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from user;
+----+----------+------------------+---------------+------------+
| id | username | email            | password_hash | avatar     |
+----+----------+------------------+---------------+------------+
|  1 | zhangsan | test12345@qq.com | passwd        | avaterpath |
|  2 | lisi     | 12345test@qq.com | passwd        | avaterpath |
+----+----------+------------------+---------------+------------+
2 rows in set (0.00 sec)

可以看到数据存入到数据库当中去。

6、验证远程连接

在windows宿主机上面也可以用Navicat连接上数据库。

ip填虚拟机的ip,port填写3306,密码为docker-compose文件中的root密码。

此处需要将宿主机(我是liunx虚拟机)的防火墙给关掉,要不然一直连接不上,或者你开启3306端口给外面访问也可以。

在这里插入图片描述

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker数据卷挂载命令volume(-v)与mount的使用总结

    Docker数据卷挂载命令volume(-v)与mount的使用总结

    本文主要介绍了Docker数据卷挂载命令volume(-v)与mount的使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 详解docker部署Jenkins新手使用教程

    详解docker部署Jenkins新手使用教程

    这篇文章主要介绍了详解docker部署Jenkins新手使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Docker容器间通讯直接路由方式实现网络通讯

    Docker容器间通讯直接路由方式实现网络通讯

    今天小编就为大家分享一篇关于Docker容器间通讯直接路由方式实现网络通讯,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 迁移变更Docker默认数据存储目录的步骤详解

    迁移变更Docker默认数据存储目录的步骤详解

    Docker安装的默认数据目录为/var/lib/docker,但是如果/目录挂载的磁盘空间不够,就需要迁移docker数据到其他目录,接下来本就给大家介绍迁移变更Docker默认数据存储目录的操作步骤,需要的朋友可以参考下
    2023-12-12
  • 使用docker compose部署emqx集群的示例

    使用docker compose部署emqx集群的示例

    这篇文章主要介绍了使用docker compose部署emqx集群,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Docker安装MySQL8的方法步骤

    Docker安装MySQL8的方法步骤

    本篇文章主要介绍了Docker安装MySQL8的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Docker 搭建集群MongoDB的实现步骤

    Docker 搭建集群MongoDB的实现步骤

    这篇文章主要介绍了Docker 搭建集群MongoDB的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Docker使用镜像仓库的方法

    Docker使用镜像仓库的方法

    这篇文章介绍了Docker使用镜像仓库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • Docker部署Apollo的实现步骤

    Docker部署Apollo的实现步骤

    众所周知分布式配置中心在目前也可以说是企业中项目的标配了,本文主要介绍了Docker 部署Apollo的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Docker部署php运行环境(php-fpm+nginx)

    Docker部署php运行环境(php-fpm+nginx)

    Docker 是一种流行的容器化平台,可以帮助开发人员快速创建、部署和管理容器化应用程序,本文将介绍如何使用 Docker 搭建 PHP 开发环境服务器,让您能够轻松地开始 PHP 开发工作,感兴趣的可以了解一下
    2023-11-11

最新评论