Docker构建JDK11环境镜像,启动Java后端服务

本文介绍了如何使用Dockerfile创建一个基于AdoptOpenJDK11的SpringServer镜像,包括编写Dockerfile指令,打包后端服务,构建镜像,运行容器以及将镜像推送到DockerHub。
摘要由CSDN通过智能技术生成

一、准备 dockerfile 文件

        在一个目录下创建一个名为 dockerfile 的文件:

docker vim dockerfile

添加以下内容,注释有构建镜像时的指令说明,仅供参考,根据实际项目而定

#基础镜像,jdk11环境,有adoptopenjdk/openjdk8
FROM adoptopenjdk/openjdk11

#作者
MAINTAINER Jungle

#创建目录
RUN mkdir "/jar"
RUN mkdir -p /smart/server
RUN mkdir -p /smart/server/logs
RUN mkdir -p /smart/server/temp

#项目的工作目录
WORKDIR /smart/server

#将主机上当前目录下的jar目录中的 所有.jar 文件复制到 Docker 镜像内部的 /jar 目录中
ADD ./*.jar /jar/

#设置环境变量
ENV SERVER_PORT=8088

# 设置镜像暴露端口
EXPOSE ${SERVER_PORT}

# 使用CMD来启动Java程序
CMD java -jar -Djava.security.egd=file:/dev/./urandom /jar/*.jar

Dockerfile 支持以下说明:

指令描述
ADD添加本地或远程文件和目录。
ARG使用构建时变量。
CMD指定默认命令。
COPY复制文件和目录。
ENTRYPOINT指定默认可执行文件。
ENV设置环境变量。
EXPOSE描述应用程序正在侦听的端口。
FROM从基础映像创建新的生成阶段。
HEALTHCHECK在启动时检查容器的运行状况。
LABEL向图像添加元数据。
MAINTAINER指定图像的作者。
ONBUILD指定在生成中使用映像的说明。
RUN执行构建命令。
SHELL设置映像的默认 shell。
STOPSIGNAL指定退出容器的系统调用信号。
USER设置用户和组 ID。
VOLUME创建卷装载。
WORKDIR更改工作目录。

二、后端服务打包

在当前目录下创建jar目录,maven打包,将所有jar包上传至服务器的当前目录下的jar目录中

三、构建镜像

注意有一个 点 .  表示dockerfile文件在当前目录下

#-t指定镜像名为jungle/env_jdk11,版本标签为jdk11
# . 指明dockerfile文件在当前目录下
docker build -t jungle/spring_server:jdk11 .

四、运行容器

docker命令行运行容器

docker run -d 
--name server \
-p 8088:8088 \
-v ./jar:/jar \
jungle/spring_server:jdk11

docker-compose 后台运行容器

docker-compose.yml文件内容:

version: "3"



services:

  smart-server:
    image:jungle/spring_server:jdk11
    container_name: server
    restart: always
    # mem_limit: 1024m
    ports:
     - "8088:8088"
    environment:
      server.port: 8088
      # 应用的访问路径
      server.servlet.context-path: /
      spring.profiles.active: prod
      #JVM_OPTS: -Xmx512m -Xms512m
      # 时区上海
      TZ: Asia/Shanghai
    volumes:
      - ./jar:/jar
    command:  ["java", "-jar", "-Djava.security.egd=file:/dev/./urandom", "/jar/smart-plus.jar"]
    

 启动容器

docker-compose up -d

四、推送镜像至dockerhub

推送镜像到 https://hub.docker.com/repository docker-hub镜像厂库,,dockerhub中不用创建厂库,推送镜像会自动根据镜像名创建厂库

#登录docker-hub
docker login
#然后输入用户名和密码

 登录成功如下

#为镜像打上标签(修改),若不想修改可直接使用 原来的,06b1e7f280ae 是镜像ID
docker tag 06b1e7f280ae glacierj/ry-exploit-jdk11:4.3.1
#推送到镜像厂库
docker push glacierj/ry-exploit-jdk11:4.3.1

 

拉取镜像验证

 docker pull glacierj/ry-exploit-jdk11:4.3.1

官方文档:Dockerfile reference | Docker Docs

 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值