美文网首页Docker入门系列
docker入门—2. Spring Boot应用连接Mongo

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

作者: ted005 | 来源:发表于2019-03-10 19:50 被阅读3次

    安装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应用连接Mongo

        本文链接:https://www.haomeiwen.com/subject/hvyppqtx.html