Docker部署SpringBoot+Mongo项目示例(个人记录)

Docker 整合 SpringBoot 和 MongoDB

1.安装 Docker

目前 DockerHub 上只支持 Win10 专业版,企业版,教育版直接安装 Docekr Desktop for Windows,家庭版和 Win7 和 Win8 暂时还不能安装,只能安装 Docker ToolBox。下面是 Docker ToolBox 的安装教程

进入http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 自行选择版本下载。注意安装前最好把 Hyper-V 功能关闭。(与安装 Docekr Desktop for Windows 相反)

在这里插入图片描述

如果功能里没有 Hyper-V 可以忽略,安装成功后桌面会多出三个图标

在这里插入图片描述

2.拉取 MongoDB 镜像

打开 Docker Quickstart Terminal (小鲸鱼图标)运行 docker search mongo 寻找可以拉取的 mongo 镜像。我们拉取最新的 mongo 镜像,输入 docker pull mongo:latest,下载完成后我们查看是否本地已存在该镜像 输入 docker images

在这里插入图片描述

当然我们也可以打开 Kitematic (图标像蓝色 K 的)这是图形化的 docker 界面。登录 docker 账号,进入界面,可以直接点击想要拉取的镜像 ,或者搜索我们想要的镜像

在这里插入图片描述

例如我们要拉取 redis 镜像,点击 CREATE,你就会发现它在自动下载啦。不过速度可能会比较慢

在这里插入图片描述

如果不习惯 Docker Quickstart Terminal 可以选择 PowerShell

在这里插入图片描述

把镜像放到容器中启动

我们可以进入 dockerhub 寻找相应的命令如我现在想要把 mongo 镜像放到容器中并启动https://hub.docker.com/_/mongo

首先输入 dokcer run --name mongo -d mongo:latest 把 mongo 镜像放进容器中启动。成功后输入 docker ps 查看正在启动的容器

在这里插入图片描述

进入 mongo 容器并新建 mongo 数据库,和用户

输入 docker exec -it mongo bash 然后会出现(root@/)像 linux 那样,输入 mongo 进入容器,出现 mongo 版本就表示成功了。如下图:

在这里插入图片描述

新增数据库用户 输入 use tableName(你的数据库名),就可以创建了,然后再输入 db.createUser({user: “你想要的的用户名”, pwd: “你设置的密码”, roles: [{ role: “dbOwner”, db: “你的数据库名” }]})。最后创建成功后可以通过 db.auth()验证是否已创建成功。

在这里插入图片描述

当然如果觉得命令行太麻烦,也是可以使用图形化操作的,这里可以设置端口,容器重名、删除等功能

在这里插入图片描述

3.搭建 SpringBoot 项目整合 Docker 和 MongoDB

创建 SpringBoot 项目,并在 maven 引入

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver</artifactId>
        <version>3.8.2</version>
    </dependency>

       <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <dockerDirectory>src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>

配置 application.properties

注意红色部分,因为我们在 docker mongoDB 中新增用户的格式是:user=‘’,pwd=‘’,所以我们这边也要这样配置。

编写简单实例 项目结构如下

在这里插入图片描述

实例如下:我们可以调用 SpringData 封装好的 MongoDB 直接调用 MongoTemplate 里面的方法实现简单的增删改查。

创建实体类

在这里插入图片描述

调用 MongoTemplate 方法

在这里插入图片描述

启动项目,用 postman 测试

增加用户功能

在这里插入图片描述

查找所有用户功能

在这里插入图片描述

4.编写 Dockerfile 让项目在 docker 上运行

连接 dokcer 这里使用默认的本机自带的 default,连接成功后会显示 docker 已有的镜像和正在运行的容器

在这里插入图片描述

进入 Edit Configurations

在这里插入图片描述

配置 Dockerfil 位置,另外添加 maven 命令:clean package -Dmaven.test.skip=true

在这里插入图片描述

在这里插入图片描述

编写 Dockerfile

FROM openjdk:8
VOLUME /tmp
ADD target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE 8080
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

在这里插入图片描述

运行 Dockerfile 运行成功后会在容器中出现,log 中出现 SpringBoot 项目启动成功信息

在这里插入图片描述

postman 测试查找用户成功

在这里插入图片描述

5 踩坑合集

DockerTool Box 踩坑合集

1.DockerTool Box 启动报 (default) No default Boot2Docker ISO found locally, downloading the latest release… 错误

需要下载最新的 boot2docker,可以在https://github.com/boot2docker/boot2docker/releases下载,替换掉 C:\Users\用户名.docker\machine\cache 的 boot2docker.iso

2.DockerTool Box 启动报 VBoxManage.exe: error: Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT)错误

以管理员模式启动 cmd,输入 bcdedit。确保下图红色圈中部分为 off。若为 Auto 则输入 bcdedit /set hypervisorlaunchtype off 再重启电脑。

在这里插入图片描述

Dockerfile ADD 的坑

Dockerfile ADD 需要指定路径 不指定则会出现 docker-maven-plugin ADD failed: no source files were specified 错误

ADD 不指定路径

在这里插入图片描述

ADD 指定路径

在这里插入图片描述

连接 Docker 的坑

如果你想连接自己服务器上的 docker,你需要在服务器新增端口为 2375 的入站规则,否则 idea 这边会连接失败

ADD 指定路径

连接 Docker 的坑

如果你想连接自己服务器上的 docker,你需要在服务器新增端口为 2375 的入站规则,否则 idea 这边会连接失败

猜你喜欢

转载自blog.csdn.net/eddiead/article/details/125897193
今日推荐