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';

 

posted @ 2019-08-11 07:59  mantishell  阅读(202)  评论(0编辑  收藏  举报