展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

Java项目打成镜像

前言

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

构建镜像

  • 参考

  • 下载java

  • 上传到Linux服务器

  • 编写Dockerfile放到java同一目录

# 创建编辑Dockerfile
touch Dockerfile
vi Dockerfile

# 因为jdk必须运行在操作系统之上
FROM centos:centos8
# 作者名  作者邮箱
MAINTAINER pc kkkh111@163.com
# 创建一个新目录来存储jdk文件
RUN mkdir /usr/local/java
#将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
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
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
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    # 第2个mysql表示服务器上的mysql容器名称
    username: root
    password: 123456
  • 打包成功后启动容器
docker run --rm -p 8080:8080 --name demo  --link mysql:db_back01 chniny/demo:2.0
# mysql表示mysql容器名称
# db_back01表示容器别名
  • 测试依然报错:
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

# 因为项目使用的java11
FROM chniny/java:11.0.12
VOLUME /tmp
# jar包名称
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" ]
  • 在Dockerfile路径下执行构建命令
# 构建
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
  • 测试

案例三

posted @ 2021-12-25 09:03  DogLeftover  阅读(218)  评论(0编辑  收藏  举报