docker入门—2. Spring Boot应用连接MongoDB

安装mongo

使用命令docker run mongo默认的tag是latest,安装完成后再次运行docker ps,可以看到

成功安装mongo

注意PORTS那列,hello-world-nginx的端口有映射关系0.0.0.0:32769 -> 80/tcp,但是mongo的端口只有27017/tcp,并任何没有映射关系。

要想让外部机器能够连接到mongo,需要使用下面的命令启动

docker run -p 27017:27017 -d mongo

现在可以看到mongo已经有了端口映射本机的27017

mongo端口映射

Spring Boot应用连接mongo

示例spring-boot-mongo

运行Spring Boot应用:
mvn spring-boot:run,mongo container已经在默认的端口27017运行,因此只要运行程序,添加一些produc信息,就可以看到product列表。

查询mongo

运行robomongo能够可视化的查看mongodb中的数据:

robomongo查看数据库

注意:当停止运行mongo并重新启动后,原来的数据会丢失。mongo的数据写在一个layer中,重启后会重新创建。

持久化mongodb数据

mongo docker重启后,之前的数据会丢失。这是因为docker会重新创建存储数据的layer。 要想将数据持久化,需要参考mongo的docker hub主页的说明,即:

  • 在主机创建数据存储目录,如/my_mongo_docker/data
  • 使用命令启动docker:
docker run -v /Users/hope/my_mongo_docker/data:/data/db -p 27017:27017 -d mongo

上面的命令中:

  1. -v 将本地目录映射到mongo的数据目录/data/db(主机目录:docker目录)
  2. -p 将本地27017端口映射到mongo的端口
  3. -d 表示mongo在后台运行

再次运行Spring Boot应用,添加数据后可以看到本机目录中已经有数据存在:

本机数据存储目录

重启mongo之后,之前的数据也还在。

安装MySQL

需要设置MYSQL_ROOT_PASSWORDMYSQL_ALLOW_EMPTY_PASSWORD

docker run --name test-mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -v /Users/hope/my_mysql_docker/data:/var/lib/mysql -p 3306:3306 -d mysql
  • -e 设置环境变量MYSQL_ALLOW_EMPTY_PASSWORD,密码为空
  • -v 设置主机目录:docker目录之间的映射
  • -p 设置主机端口:docker端口的映射
  • -d 后台运行

成功运行mysql docker后,使用mysql workbench测试连接:

mysql连接成功

你可能感兴趣的:(docker入门—2. Spring Boot应用连接MongoDB)