前言
- 官方只有java8的docker镜像,如果我们的项目使用java11开发的,那么用java8的镜像打包运行会报错
- 那么我们部署java项目有两种方式如:1.将项目打成war包部署到tomcat容器,2.自己构建java11的镜像
- 我的镜像仓库
构建镜像
-
参考
-
下载java

-
上传到Linux服务器

-
编写Dockerfile放到java同一目录
| |
| touch Dockerfile |
| vi Dockerfile |
| |
| |
| FROM centos:centos8 |
| |
| MAINTAINER pc kkkh111@163.com |
| |
| RUN mkdir /usr/local/java |
| |
| ADD jdk-11.0.12_linux-x64_bin.tar.gz /usr/local/java/ |
| |
| RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
| |
| ENV JAVA_HOME /usr/local/java/jdk-11.0.12 |
| ENV PATH $JAVA_HOME/bin:$PATH |
| |
| |
| VOLUME /tmp |
| docker build -t chniny/java:11.0.12 . |
案例一
idea将spring boot + mysql项目打成镜像
点击查看详情
| spring: |
| application: |
| name: demo02 |
| datasource: |
| driver-class-name: com.mysql.cj.jdbc.Driver |
| url: jdbc:mysql://mysql:3306/back01 |
| username: root |
| password: 123456 |
| docker run --rm -p 8080:8080 --name demo --link mysql:db_back01 chniny/demo:2.0 |
| |
| |
| The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from |
案例二
springboot + mysql项目打成jar包上传到服务器,用Dockerfile打成镜像
- 参考 <- 未测试
- 参考 <-
成功案例
- 准备一个spring boot项目,案例地址
- yml配置
| server: |
| port: 8080 |
| |
| spring: |
| application: |
| name: demo02 |
| datasource: |
| driver-class-name: com.mysql.cj.jdbc.Driver |
| url: jdbc:mysql://localhost:3306/back01?characterEncoding=utf-8&serverTimezone=UTC |
| username: root |
| password: 123456 |
-
项目打成jar包后上传到服务器

-
服务器上已经启动了mysql容器
-
在jar所在目录新建Dockerfile

| |
| FROM chniny/java:11.0.12 |
| VOLUME /tmp |
| |
| ADD demo02-0.0.1-SNAPSHOT.jar /app.jar |
| RUN sh -c 'touch /app.jar' |
| ENV JAVA_OPTS="" |
| ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ] |
| |
| docker build -t chniny/demo:2.0 . |
| |
| docker images |
| REPOSITORY TAG IMAGE ID CREATED SIZE |
| chniny/demo 2.0 a0e566bae674 13 seconds ago 585MB |
| chniny/java 11.0.12 66415a5e4a62 12 hours ago 539MB |
| mysql 8.0.27 3218b38490ce 4 days ago 516MB |
| |
| docker run -it --net=host --name demo -p 8080:8080 chniny/demo:2.0 |
| |
| ctrl + p + q |
- 测试

案例三
使用idea插件Alibaba Cloud Toolkit一键部署
- 参考
- 参考
- 参考
- 参考
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术