关于java:idea一键加密部署springboot到docker容器

36次阅读

共计 2821 个字符,预计需要花费 8 分钟才能阅读完成。

1. 环境筹备

  1. 装置 docker 的 centos 服务器一台(装置流程参考 linux 以 ssl 模式装置 docker)
  2. idea
  3. docker 链接证书

2. idea 配置 docker 链接

  1. 关上 设置外面的插件
  2. 抉择docker,而后把咱们的 docker 配置信息填上,证书目录也抉择
  3. 呈现 连贯胜利 即可

  1. 这里可查看咱们的 容器

3. 配置 mysql 容器

因为咱们的 springboot 我的项目须要应用到 mysql,所以须要装置 mysql,正好一起部署到 docker 下面。

在装置了 docker 的 linux 服务器上执行以下命令

  1. 拉取mysql 最新版本镜像
docker pull mysql

  1. 查看mysql 镜像是否拉取胜利
docker images

  1. 启动mysql 容器
mkdir -p /home/project/mysql/{data,conf}
docker run -di -p 3306:3306 --restart=always --privileged=true -v /home/project/mysql/conf:/etc/mysql/conf.d -v /home/project/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yinfeng --name=mysql  mysql

-e MYSQL_ROOT_PASSWORD 设置的 mysql 的 root 账号的登录明码 yinfeng。
-di d 示意以守护过程的形式在后盾运行,i 示意运行容器

3.1 查看容器是否启动胜利

docker ps

3.2 阿里云平安组凋谢 3306 端口

3.3 应用 navicat 链接测试一下,已连贯胜利


4. springboot pom 文件配置

  1. 创立一个简略的 springboot 我的项目

这是我的整个我的项目构造

  1. 配置 docker-maven-plugin,这个文件很重要,肯定要认真配好
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.2</version>
    <!-- 将插件绑定在某个 phase 执行 -->
    <executions>
        <execution>
            <id>build-image</id>
            <!-- 用户只需执行 mvn package,就会主动执行 mvn docker:build-->
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <!-- 指定生成的镜像名, 这里是咱们的作者名 + 我的项目名 -->
        <imageName>yinfeng/${project.artifactId}</imageName>

        <!-- 指定标签 这里指定的是镜像的版本,咱们默认版本是 latest-->
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>
        <rm>true</rm>

        <!-- 指定根底镜像 jdk1.8-->
        <baseImage>java:8</baseImage>

        <!-- 切换到 logs 目录 -->
        <workdir>/logs</workdir>

        <!-- 查看咱们的 java 版本 -->
        <cmd>["java", "-version"]</cmd>

        <!--${project.build.finalName}.jar 是打包后生成的 jar 包的名字 退出 UTF- 8 编码防止中文乱码 -->
        <entryPoint>["java", "-Dfile.encoding=UTF-8", "-jar", "/${project.build.finalName}.jar"]</entryPoint>

        <!-- 指定近程 docker api 地址 -->
        <dockerHost>https:// 服务器 ip:2375</dockerHost>

        <!-- 指定 ca 证书文件门路地址 -->
        <dockerCertPath>${project.basedir}/src/main/resources/ca</dockerCertPath>

        <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!--jar 包所在的门路  此处配置的 即对应 target 目录 -->
                <directory>${project.build.directory}</directory>
                <!-- 用于指定须要复制的文件 须要蕴含的 jar 包,这里对应的是 Dockerfile 中增加的文件名 -->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>

    </configuration>
</plugin>

  1. 测试打包 springboot 镜像

顺次按图中步骤操作

打包镜像胜利日志,第一次打包速度比较慢,急躁等一会

在 docker 服务中查看咱们刚刚打包的镜像

  1. 将打包的镜像部署到容器中

4.1. 抉择咱们镜像创立容器

4.2 配置容器参数,因为我用的是 https 协定,所以凋谢了 443 端口映射,大家能够依据本人须要映射对应端口到本人的容器上

--net=host -p 443:443  -v /logs:/logs

- p 是端口映射
- v 是数据卷映射,/logs 是咱们的日志目录,便于在云主机查看日志
–net=host 是该容器间接应用服务器本机的网络而不被 docker 网络隔离,不便咱们我的项目间接连贯容器里的 mysql 数据库

4.3 启动容器

4.4 启动胜利日志

4.5 测试一下,能够间接拜访胜利,后盾日志也有了


5. 配置 linux 定时工作

为什么要配置定时工作呢?
因为咱们每次打包的时候都会将上一次的镜像作废,但 docker 又不会主动删除,很占用空间,因而须要配一个定时工作把这些垃圾镜像删除


首先在咱们的 linux 服务器上创立革除镜像的 sh 脚本

vi /logs/deleteImg.sh

而后把上面代码粘上去并保留退出

# 清空 none 镜像
docker rmi `docker images -q -f dangling=true`


再去配置定时工作

crontab -e

而后按 a 键进入输出模式,在把上面代码粘上去,最初保留退出即可,脚本的意思是每天凌晨 2 点执行 deleteImg.sh 这个革除镜像的脚本

00 02 * * * /bin/bash /logs/deleteImg.sh

6. 总结

6.1 当初互联网公司部署形式个别都是 docker 和 k8s 配合进行的,因而学习 docker 相干部署常识是很有必要;
6.2 这篇博客只能算是入门 docker,但也将 idea 和 docker 完满配合,然而 docker-maven-plugin 的官网文档写的不是很分明,所以我只能配置到这个境地,心愿老铁们三连反对一波。

正文完
 0