springboot + dockerfile-maven-plugin 整合

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: springboot + dockerfile-maven-plugin 整合

1. 在maven的pom.xml文件中增加配置


<properties>
    <docker.image.prefix>xd</docker.image.prefix>
  </properties>
  <build>
    <finalName>docker-demo</finalName>
      <plugins>
          <plugin>
              <groupId>com.spotify</groupId>
              <artifactId>dockerfile-maven-plugin</artifactId>
              <version>1.3.6</version>
              <configuration>
                  <repository>${docker.image.prefix}/${project.artifactId}</repository>
                  <buildArgs>
                      <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                  </buildArgs>
              </configuration>
          </plugin>
      </plugins>
  </build>


配置讲解

Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。project.build.finalName∗∗产出物名称,缺省为∗∗{project.build.finalName}** 产出物名称,缺省为**project.build.finalName{project.artifactId}-${project.version}


2. 打包SpringCloud镜像并上传私有仓库并部署



什么是dockerFile


什么是Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像

创建 Dockerfile 添加内容 (默认是根目录, 可以修改为src/main/docker/Dockerfile,如果修则需要制定路径)

下面是dockfile的内容:


FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]


参数讲解:

  • FROM : 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
  • VOLUME  配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
  • ARG:设置编译镜像时加入的参数, ENV 是设置容器的环境变量
  • COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
  • ENTRYPOINT:容器启动时执行的命令
  • EXPOSE 8080:暴露镜像端口


3. 构建镜像


mvn install dockerfile:build
mvn install dockerfile:build -Dmaven.test.skip=true


补充: 如何在阿里云上的linux如何打包上去


4. 在maven 安装目录的setting文件中加入配置


<server>
  <id>docker-registry</id>
  <username>*******</username>
  <password>******</password>
</server>


5. 修改阿里云centeros7 Docker配置开放远程访问


vi /usr/lib/systemd/system/docker.service


ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

最终效果:


ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock


6. 重启


systemctl daemon-reload
systemctl start docker


7. 服务器验证是否开始监听


netstat -anp|grep 2375
curl 127.0.0.1:2375/info


8. windows系统环境变量中新建DOCKER_HOST, 值为 tcp://[修改成你的远程服务器端口号]:2375


9. 打标签


docker tag a1b9fc71720d registry.cn-shenzhen.aliyuncs.com/xd/xd_images:docker-demo-v201808


10. 推送到镜像仓库


docker push registry.cn-shenzhen.aliyuncs.com/xd/xd_images:docker-demo-v201808


11. 应用服务器拉取镜像


docker pull registry.cn-shenzhen.aliyuncs.com/xd/xd_images:docker-demo-v201808


12. 启动


docker run -d --name xd_docker_demo1 -p 8099:8080  a1b9fc71720d


13. 查看启动日志


docker logs -f  containerid


14. 访问


http://[IP]:8099/find/user


docker整合注册中心



1. 新增maven插件


<properties>
  <docker.image.prefix>xd</docker.image.prefix>
</properties>
<build>
  <finalName>docker-demo</finalName>
  <plugins>
    <plugin>
      <groupId>com.spotify</groupId>
      <artifactId>dockerfile-maven-plugin</artifactId>
      <version>1.3.6</version>
      <configuration>
        <repository>${docker.image.prefix}/${project.artifactId}</repository>
        <buildArgs>
          <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
      </configuration>
    </plugin>
  </plugins>
</build>


2. 新建Dockerfile


FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]


3. 打包


mvn install dockerfile:build
mvn install -Dmaven.test.skip=true dockerfile:build


4. 推送阿里云镜像仓库


阿里云镜像仓库:dev.aliyun.com/search.html


docker tag 062d2ddf272a registry.cn-shenzhen.aliyuncs.com/xd/xd_images:eureka-v20180825
docker push registry.cn-shenzhen.aliyuncs.com/xd/xd_images:eureka-v20180825
docker pull registry.cn-shenzhen.aliyuncs.com/xd/xd_images:eureka-v20180825


5、查看日志


docker logs -f  containerid


6. 运行


docker run -d --name docker-eureka-server -p 8761:8761 e7f687f101a7


Docker Redis安装



1. 搜索镜像


docker search redis


2. 拉取


docker pull docker.io/redis


3. 启动


docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d


参考:


docker run --name "xd_redis" -p 6379:6379 -d 4e8db158f18d --requirepass "123456" -v $PWD/data:/data


4. 访问redis容器里面,进行操作


docker exec -it 295058d2b92e redis-cli


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
前端开发 Java Maven
IEAD MAVEN创建springboot 项目
IEAD MAVEN创建springboot 项目
29 0
|
2月前
|
Java 程序员 API
Springboot-swagger配置(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-swagger配置(idea社区版2023.1.4+apache-maven-3.9.3-bin)
59 1
|
2月前
|
前端开发 Java 数据库连接
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
33 0
|
2天前
|
Java Maven Kotlin
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
|
2月前
|
JSON Java Maven
SpringBoot使用git-commit-id-maven-plugin打包
【2月更文挑战第1天】 git-commit-id-maven-plugin 是一个maven 插件,用来在打包的时候将git-commit 信息打进jar中。 这样做的好处是可以将发布的某版本和对应的代码关联起来,方便查阅和线上项目的维护。至于它的作用,用官方说法,这个功能对于大型分布式项目来说是无价的。
86 0
|
2月前
|
安全 前端开发 程序员
Springboot-EolinkApikit一键生成注释与一键上传API接口(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-EolinkApikit一键生成注释与一键上传API接口(idea社区版2023.1.4+apache-maven-3.9.3-bin)
19 0
|
2月前
|
Java API Maven
Springboot快速搭建跨域API接口(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot快速搭建跨域API接口(idea社区版2023.1.4+apache-maven-3.9.3-bin)
38 0
|
2月前
|
JavaScript Java Apache
【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
201 0
|
2月前
|
XML Java 测试技术
【SpringBoot】基于 Maven 的 pom.xml 配置详解
【SpringBoot】基于 Maven 的 pom.xml 配置详解
229 0
【SpringBoot】基于 Maven 的 pom.xml 配置详解
|
2月前
|
网络协议 Java Maven
springboot + dockerfile-maven-plugin 整合
springboot + dockerfile-maven-plugin 整合
61 0

热门文章

最新文章

推荐镜像

更多