zoukankan      html  css  js  c++  java
  • docker 入坑4 搭建mongoldb、redis、mysql

    搭建mongodb

    $ docker run --name mongo -it -d -p 27017:27017 -v ~/docker-data/mongo:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo
    $ docker exec -it mongo /bin/bash
    # mongo -u admin -p 123456

     然后我们添加一个用户:

    db.createUser({
        {
            user: "spring",
            pwd: "123456",
            roles: [
                role: "readWrite", db: "demo"
            ]
        }
    })

    在java的配置文件:

    spring.data.mongodb.uri=mongodb://spring:123456@localhost:27017/demo

    搭建redis

    $ docker run --name redis-server -it -d -p 6379:6379 -v ~/docker-data/redis:/data/db redis redis-server --appendonly yes
    $ docker exec -it redis-server redis-cli

    搭建mysql

    1、拉取官方镜像(我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版)

    docker pull mysql:5.7   # 拉取 mysql 5.7
    docker pull mysql       # 拉取最新版mysql镜像

    2、一般来说数据库容器不需要建立目录映射

    sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    • –name:容器名,此处命名为mysql
    • -e:配置信息,此处配置mysql的root用户的登陆密码
    • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口
    • -d:源镜像名,此处为 mysql:5.7

    3、如果要建立目录映射

    duso docker run -p 3306:3306 --name mysql 
    -v /usr/local/docker/mysql/conf:/etc/mysql 
    -v /usr/local/docker/mysql/logs:/var/log/mysql 
    -v /usr/local/docker/mysql/data:/var/lib/mysql 
    -e MYSQL_ROOT_PASSWORD=123456 
    -d mysql:5.7
    • -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

    4、连接mysql

    sudo docker exec -it mysql /bin/bash
    mysql -uroot -p123456

    5、使用java的jdbc测试

     1 import java.sql.*;
     2 
     3 public class JdbcTest {
     4     public static void main(String[] args) {
     5         Connection connection = null;
     6         PreparedStatement preparedStatement = null;
     7         ResultSet resultSet = null;
     8         try
     9         {
    10             //加载数据驱动
    11             Class.forName("com.mysql.jdbc.Driver");
    12             //通过驱动管理类获取数据库连接
    13             connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8","root","123456");
    14             System.out.println("创建数据库连接成功");
    15             //定义sql语句?表示占位符
    16             String sql = "select * from user where username = ?";
    17             //获取预处理statement
    18             preparedStatement = connection.prepareStatement(sql);
    19             //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
    20             preparedStatement.setString(1,"zhangsan");
    21             //向数据库发出sql查询,查询出结果集
    22             resultSet = preparedStatement.executeQuery();
    23             //遍历查找结果集
    24             while (resultSet.next()){
    25                 System.out.println(resultSet.getString("id") + ""
    26                 + resultSet.getString("username"));
    27             }
    28         } catch (Exception e) {
    29             e.printStackTrace();
    30         }finally {
    31             //释放资源
    32             if(resultSet != null){
    33                 try{
    34                     preparedStatement.close();
    35                 }catch (SQLException e){
    36                     e.printStackTrace();
    37                 }
    38             }
    39             if(connection != null){
    40                 try{
    41                     connection.close();
    42                 }catch (SQLException e){
    43                     e.printStackTrace();
    44                 }
    45             }
    46         }
    47     }
    48 }

     5、数据库:

     6、驱动

     mysql-connector-java-5.1.36

    7、在idea中添加lib文件夹,在文件夹lib中添加驱动的jar包,然后

    下面的方式待验证:

    1、在宿主机上创建/mysql/data和/mysql/conf

    2、docker run --name mysql -d --rm -v /home/mantishell/mysql/conf:/etc/mysql/conf.d -v /home/mantishell/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

    3、ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

  • 相关阅读:
    AJPFX:如何保证对象唯一性呢?
    AJPFX关于this用法和注意事项
    AJPFX关于abstract的总结
    AJPFX区分this和super
    AJPFX关于java数组排序
    AJPFX关于异常和file类的总结
    AJPFX总结Java 类加载器
    优先级队列用法详解(priority_queue)
    子类中调用构造函数和析构函数的顺序
    strcpy,memcpy,memset函数实现
  • 原文地址:https://www.cnblogs.com/mantishell/p/11333802.html
Copyright © 2011-2022 走看看