四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)

这篇具有很好参考价值的文章主要介绍了四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.现有环境

现有环境如下:
1.工作目录下有若干个可执行的jar包:在工作目录下打开命令行进行操作(Windows和Linux版的docker均可,这里以Windows为例)
docker部署jar包,Docker,docker,容器,linux,java
2.拉取任意一个能运行jar包的jdk镜像:我的是adoptopenjdk/openjdk12
docker部署jar包,Docker,docker,容器,linux,java
3.已具备jar包所需的基本组件:例如mysql、redis、nacos等
docker部署jar包,Docker,docker,容器,linux,java

2.部署方式

方式一:直接部署jar包为容器(单个jar包)

docker部署jar包,Docker,docker,容器,linux,java
假如我只想将nettyserver-1.0.36-SNAPSHOT.jar这个jar包部署成容器运行,只需要直接输入以下命令即可:

docker run -d --name nettyserver -p 8083:8083 -p 8066:8066 -v G:\platform\jarapp:/home/jarapp adoptopenjdk/openjdk12 java -jar -Dfile.encoding=utf-8 /home/jarapp/nettyserver-1.0.36-SNAPSHOT.jar
指令说明:
--name nettyserver:创建的容器名为nettyserver
-p 8083:8083 -p 8066:8066:该jar包所要暴露的端口为8083和8066
-v G:\platform\jarapp:/home/jarapp:将本机的G:\platform\jarapp目录挂载到容器中/home/jarapp目录
adoptopenjdk/openjdk12 :基于这个镜像创建的容器
java -jar -Dfile.encoding=utf-8 /home/jarapp/nettyserver-1.0.36-SNAPSHOT.jar:创建容器时执行这条命令

可以通过docker ps -a命令查看已有容器中是否有nettyserver。
该方式比较方便快捷,但不会生成镜像。

方式二:以启动jar包打包镜像,部署容器(单个和多个jar包均可)

1.Dockerfile指令说明

FROM:构建镜像基于哪个镜像
MAINTAINER:镜像维护者姓名或邮箱地址
RUN:构建镜像时运行的指令
CMD:运行容器时执行的shell环境
VOLUME:指定容器挂载点到宿主机自动生成的目录或其他容器
USER:为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户
WORKDIR:为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录
HEALTHCHECH:健康检查
ARG:构建时指定的一些参数
EXPOSE:声明容器的服务端口(仅仅是声明)
ENV:设置容器环境变量
ADD:拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压
COPY:拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能
ENTRYPOINT:运行容器时执行的shell命令

2.创建并制作Dockerfile文件

创建Dockerfile文件:
docker部署jar包,Docker,docker,容器,linux,java
填入以下自定义内容:

#环境
FROM adoptopenjdk/openjdk12 
#作者信息
MAINTAINER funfan <1424393744@qq.com>
#将本地文件挂载到容器
EXPOSE 8082 8083 8066 8090
#拷贝
COPY ut-rtj1a-1.0.36-SNAPSHOT.jar /ut-rtj1a-1.0.36-SNAPSHOT.jar
COPY nettyserver-1.0.36-SNAPSHOT.jar /nettyserver-1.0.36-SNAPSHOT.jar
COPY essgserver-1.0.36-SNAPSHOT.jar /essgserver-1.0.36-SNAPSHOT.jar
#执行命令
CMD ["sh", "-c", "java -jar /ut-rtj1a-1.0.36-SNAPSHOT.jar > /rtj1a.log 2>&1 & java -jar /nettyserver-1.0.36-SNAPSHOT.jar > /nettyserver.log 2>&1 & java -jar /essgserver-1.0.36-SNAPSHOT.jar > /essgserver.log 2>&1"]

**

如果只需制作单个jar包的镜像,只需将有关多余jar包的指令删除即可。

**

3.制作镜像

根据Dockerfile制作镜像命令如下:

docker build -f 【dockerfile文件的路径】 -t 【自定义镜像名】:latest .

本案例中我自定义的镜像名为menjin,制作镜像的具体命令如下:

docker build -f menjin.dockerfile -t menjin:latest .

可以通过docker images命令查看已有镜像:
docker部署jar包,Docker,docker,容器,linux,java

4.部署容器

根据刚刚生成的镜像部署容器:

docker run -d --name 【自定义容器名】 -p 【需要暴露的端口号】 【所基于的镜像名】

本案例中我自定义容器名也为menjin,3个jar包的暴露端口有8082、8083、8066、8090:

docker run -d --name menjin -p 8082:8082 -p 8083:8083 -p 8066:8066 -p 8090:8090 menjin

可以通过docker ps -a命令查看已有容器:
docker部署jar包,Docker,docker,容器,linux,java

方式三:以启动脚本打包镜像,部署容器(单个和多个jar包均可)

与方式一不同之处是,除了制作dockerfile文件外,还要制作一个启动脚本run.shdocker部署jar包,Docker,docker,容器,linux,java

1.创建并制作启动脚本run.sh

填入以下内容:(jar包为工作目录的jar包)

#!/bin/bash
nohup java -jar -Dfile.encoding=utf-8 /ut-rtj1a-1.0.36-SNAPSHOT.jar & nohup java -jar -Dfile.encoding=utf-8 /essgserver-1.0.36-SNAPSHOT.jar & nohup java -jar -Dfile.encoding=utf-8 /nettyserver-1.0.36-SNAPSHOT.jar

注意事项:在windows编辑的sh脚本的行尾符是CRLF格式的,要在linux中运行的话要改成LF格式才行。更换脚本格式的方法可以自行百度,我是采用notepad++工具将CRLF替换为LF的:

如果只需制作单个jar包的镜像,只需将有关多余jar包的指令删除即可。

2.创建并制作Dockerfile文件

#环境
FROM adoptopenjdk/openjdk12 
#作者信息
MAINTAINER funfan <1424393744@qq.com>
EXPOSE 8082 8083 8066 8090
#拷贝
COPY run.sh /run.sh
COPY ut-rtj1a-1.0.36-SNAPSHOT.jar /ut-rtj1a-1.0.36-SNAPSHOT.jar
COPY nettyserver-1.0.36-SNAPSHOT.jar /nettyserver-1.0.36-SNAPSHOT.jar
COPY essgserver-1.0.36-SNAPSHOT.jar /essgserver-1.0.36-SNAPSHOT.jar
#RUN命令
RUN chmod 777 /run.sh
#执行命令
ENTRYPOINT ["sh","/run.sh"]

如果只需制作单个jar包的镜像,只需将有关多余jar包的指令删除即可。

3.制作镜像

根据Dockerfile制作镜像命令如下:

docker build -f 【dockerfile文件的路径】 -t 【自定义镜像名】:latest .

本案例中我自定义的镜像名为acs,制作镜像的具体命令如下:

docker build -f acs.dockerfile -t acs:latest .

可以通过docker images命令查看已有镜像中是否有acs。

4.部署容器

根据刚刚生成的镜像部署容器:

docker run -d --name 【自定义容器名】 -p 【需要暴露的端口号】 【所基于的镜像名】

本案例的自定义容器名也为acs,3个jar包的暴露端口有8082、8083、8066、8090:

docker run -d --name acs -p 8082:8082 -p 8083:8083 -p 8066:8066 -p 8090:8090 acs

可以通过docker ps -a命令查看已有容器中是否有acs。文章来源地址https://www.toymoban.com/news/detail-767304.html

到了这里,关于四、Dockerfile应用案例教程(将一个或多个jar包部署到docker容器中运行)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker安装启动、常用命令、应用部署、迁移备份、Dockerfile、Docker私有仓库

    目录 1.Docker安装与启动 1.1 安装Docker  1.2 设置ustc的镜像  1.3 Docker的启动与停止 2.常用命令 2.1 镜像相关命令 2.1.1 查看镜像 2.1.2 搜索镜像  2.1.3 拉取镜像 2.1.4 删除镜像 2.2 容器相关命令 2.2.1 查看容器 2.2.2 创建与启动容器 2.2.3 停止与启动容器 2.2.4 文件拷贝 2.2.5 目录挂载

    2024年01月22日
    浏览(45)
  • docker一个容器内部署多个服务

    原因是,我有一个springBoot服务需要写入httpd的目录,然后httpd提供链接给别人下载。之前的方法是,httpd和springBoot各一个容器,但是我们将镜像是部署在腾讯云上的,腾讯云会自动对每个容器分离不同的虚拟机,这样就导致,他们不能共享目录。所以只能写在一个容器内。 思

    2023年04月10日
    浏览(24)
  • Docker部署Springboot应用【mysql部署+jar部署+Nginx部署】

    【项目达到目标】 1.基本准备 2、mysql部署 3、jar部署 4、Nginx部署 一、基本准备 石工拿的就是之前放置在我们服务器上的应用进行部署,主要就是mysql和jar还有Vue的部署。 目前已经有的是jar、已经打包好的vue   二、mysql部署 docker run -d --name mysql     --restart=always     -p 3

    2024年02月14日
    浏览(24)
  • docker 容器操作、应用部署、mysql,redis,nginx、迁移与备份、Dockerfile

    mysql部署 redis nginx 常用和不常用的命令 dockerfile构建一个django项目 docker私有仓库 镜像传到官方仓库 镜像分层 私有仓库搭建 新建flask项目app.py 编写Dockerfile 用于构建flask项目的镜像 编写dockercompose的yml文件dockercompose.yml dockercompose启动 项目目录结构 luffy_api/Dockerfile 构建uwsgi+dj

    2023年04月13日
    浏览(44)
  • Docker基础(镜像的结构,Dockerfile语法介绍,基于Ubuntu镜像来构建一个Java应用)

    要想自己构建镜像,必须先了解镜像的结构。 镜像之所以能让我们快速跨操作系统部署应用而忽略其运行环境、配置,就是因为镜像中包含了程序运行需要的系统函数库、环境、配置、依赖。 因此,自定义镜像本质就是依次准备好程序运行的基础环境、依赖、应用本身、运

    2024年02月20日
    浏览(37)
  • 【jenkins】idea+jenkins+docker+dockerfile+compose流水线部署java应用

    目录 整体架构 环境准备 安装docker以及docker-compose jenkins安裝 maven安装 portainer面板安装 sonarqube安装  在项目中增加dockerfile和compose.yml脚本  Dockerfile脚本内容 compose.yml脚本内容 jenkins安装必要插件 jenkins增加流水线任务 增加pipeline任务job  增加pipeline脚本 WXWork Notification Plugin 

    2024年02月16日
    浏览(50)
  • (三)docker:Dockerfile构建容器运行jar包

    目录结构以及准备的文件 2.Dockerfile内容 3.构建镜像 4.查看生成镜像 5.创建并运行容器 6.查看创建的容器 7.启动画面确认

    2024年02月06日
    浏览(33)
  • 如何将应用一键部署至多个环境?丨Walrus教程

    在 Walrus 平台上,运维团队在资源定义(Resource Definition)中声明提供的资源类型,通过设置匹配规则,将不同的资源部署模板应用到不同类型的环境、项目等。与此同时,研发人员无需关注底层具体实现方式,通过创建 Resource 对象声明需要使用的资源类型及基本信息,就可以

    2024年03月09日
    浏览(25)
  • Docker:使用dockerFile创建镜像(war包和jar包)

    1、使用war包打镜像 (1)在war的当前路径下,新建一个文件——Dockerfile (2)编辑Dockerfile文件    vim Dockerfile Dockerfile文件内容: FROM java:8                # 选择项目中要求的版本 MAINTAINER ylb             # 作者 WORKDIR /穿件文件夹的路径    # 选择项目中要求的

    2024年02月15日
    浏览(36)
  • 微服务06-Dockerfile自定义镜像+DockerCompose部署多个镜像

    常见的镜像在DockerHub能找到,但是我们自己写项目得自己构造镜像 作用 :提高复用性,当应用需要更新时,不再是整个系统重装进行更新 ,而是对需要更新的部分进行更新,其他地方不动——这就是分层的好处 每做一次新的操作会产生新的一层 简单来说,镜像就是在系统

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包