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