Docker部署jar

一、Docker简介

Docker 是一个开源的项目,诞生于2013 年初,最初是 dotCloud 公司内部一个云平台的项目。它基于 Google 公司推出的 Go 语言实现。Docker 自开源后受到广泛的关注和讨论,甚至被喻为“下一次开源革命的领导者”。

Docker 利用 LXC 技术,以及 Linux 内核的 Cgroups 和 Namespace 等独特技术对进程进行封装,以达到和虚拟机类似的隔离效果,但更加轻便和高效。

Docker 以容器为单位进行应用程序的封装和交付。它可以自动化的构建、测试和部署应用程序。容器提供了一个独立的运行环境,它的配置和依赖关系被打包在一个可移植的静态容器中。由于所有的容器通过同一种方式进行封装,因此它们可以在任何 Docker 容器运行的环境中运行。

二、Docker 部署 jar

1、创建一个应用

首先,我们需要创建一个 Spring Boot 项目,作为我们的应用程序。使用以下命令创建并启动一个默认 Spring Boot 应用程序。


    spring init --dependencies=web myapp
    cd myapp
    ./mvnw spring-boot:run

您应该可以在浏览器中访问该应用程序,在 http://localhost:8080 上看到 Hello World!。

2、Dockerfile

创建 Dockerfile 文件, 并使用以下命令构建 Docker 镜像。


    FROM openjdk:8-jdk-alpine
    WORKDIR /app
    COPY target/myapp-0.0.1-SNAPSHOT.jar /app
    ENTRYPOINT ["java","-jar","myapp-0.0.1-SNAPSHOT.jar"]

该 Dockerfile 文件从官方的 openjdk 镜像构建一个新镜像,并设置一个工作目录 /app。将构建好的 jar 包放置在容器中的 /app 目录,并运行 ENTRYPOINT 命令启动应用程序。

使用以下命令构建 Docker 镜像。


    docker build -t myapp .

构建好的镜像可以在本地镜像列表中看到,使用以下命令列出镜像。


    docker images

3、运行 Docker 容器

运行容器前,我们需要停止之前的应用程序,并使用以下命令启动 Docker 容器。


    docker run -d -p 8080:8080 myapp

-d 参数表示容器在后台运行。-p 参数表示将容器内部的 8080 端口映射到主机的 8080 端口。

您应该可以在浏览器中访问该应用程序,在 http://localhost:8080 上看到 Hello World!。

三、Docker Compose

1、创建 Docker Compose 文件

Docker Compose 是 Docker 官方推出的工具,用于定义和运行多容器的 Docker 应用程序。我们可以使用它来定义多个容器并相互通信的应用程序。

创建一个 docker-compose.yml 文件,添加以下内容。


    version: '3'
    services:
      myapp:
        build: .
        ports:
          - "8080:8080"
        depends_on:
          - mysql
      mysql:
        image: mysql:5.7
        environment:
          MYSQL_ROOT_PASSWORD: example

在这个文件中,我们定义了两个服务。myapp 服务使用之前构建的 Docker 镜像,并映射容器中的 8080 端口到主机的 8080 端口。mysql 服务使用官方的 MySQL 镜像,并设置 ROOT 密码。

2、启动 Docker Compose

使用以下命令启动 Docker Compose。


    docker-compose up

启动后,应用程序可以在 http://localhost:8080 上访问。

3、关闭 Docker Compose

使用以下命令停止 Docker Compose。


    docker-compose down

四、Docker Swarm

1、初始化 Docker Swarm

Docker Swarm 是 Docker 官方提供的容器编排工具。它可以让您轻松地扩展和管理 Docker 容器。在使用 Docker Swarm 之前,我们需要初始化一个 Docker Swarm。


    docker swarm init

这个命令将初始化一个 Docker Swarm,并返回一个命令,用于加入一个节点到 Swarm 中。

2、创建一个 Stack

创建一个名为 myapp 的 Stack,使用以下命令。


    docker stack deploy -c docker-compose.yml myapp

这个命令将在 Swarm 中部署一个名为 myapp 的 Stack,它将启动一个 myapp 服务和一个 mysql 服务。

3、查看服务

使用以下命令查看正在运行的服务。


    docker service ls

您应该可以看到两个服务,“myapp_myapp”和“myapp_mysql”。

使用以下命令查看服务的详细信息。


    docker service inspect myapp_myapp

您应该可以看到 myapp_myapp 服务的详细信息,包括它的名称、镜像、副本数量、端口映射等。

4、扩展服务

使用以下命令将 myapp_myapp 服务的副本数量扩展到 3。


    docker service scale myapp_myapp=3

您应该可以看到 myapp_myapp 服务的副本数量被扩展到 3。

5、关闭 Stack

使用以下命令关闭 Stack。


    docker stack rm myapp

这个命令将删除名为 myapp 的 Stack,停止所有关联的服务。

五、总结

本文介绍了使用 Docker 部署 jar 文件的方法,包括手动部署、使用 Docker Compose 和使用 Docker Swarm。Docker 提供的容器化方式可以让我们更轻松地进行应用程序的开发、测试和部署。希望本文可以帮助您更好的使用 Docker。

原创文章,作者:WKRJA,如若转载,请注明出处:https://www.506064.com/n/360940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WKRJAWKRJA
上一篇 2025-02-24 00:33
下一篇 2025-02-24 00:33

相关推荐

  • docker-ce-18.03.1.ce-1.el7.centos.x86_64需要pigz这个依赖的解决方案

    当我们在linux centos系统中安装docker-ce-18.03.1.ce-1.el7.centos.x86_64时,有时可能会遇到“nothing provides pi…

    编程 2025-04-29
  • 如何解决Docker+k8s报错413 Request Entity Too Large

    对于使用Docker容器和Kubernetes集群的开发人员,在处理HTTP请求时,常常会遇到413 Request Entity Too Large的报错。这通常是由于请求的大小…

    编程 2025-04-27
  • docker-compose编写用法介绍

    本文将详细介绍docker-compose编写的各个方面,包括语法、常见命令等等,旨在帮助读者更好的了解如何使用docker-compose。 一、docker-compose的语…

    编程 2025-04-27
  • Docker 垃圾电脑的解决方案

    Docker 是一种轻量级的容器化技术,可以在一个操作系统中,同时运行多个独立的应用。在使用 Docker 的过程中,可能会出现 Docker 占用大量硬盘空间,导致电脑变得极其缓…

    编程 2025-04-27
  • 如何解决linux jar包 invalid or corrupt jarfile问题

    对于许多开发人员和系统管理员在Linux环境下使用Java开发过程中遇到的一个常见的问题是 invalid or corrupt jarfile(无效或损坏的jar文件)错误。当您…

    编程 2025-04-27
  • Docker挂载目录–graph用法介绍

    本文将从如下几个方面详细阐述Docker挂载目录–graph: 一、基本概念 在Docker中,镜像是由一系列只读层组成的文件系统。当我们启动一个容器时,Docker会…

    编程 2025-04-27
  • Docker批量删除容器详解

    一、前言 Docker是一个开源的应用容器引擎,提供了一种轻量级容器化技术,方便快捷的进行应用打包、发布、运行。作为广泛应用的技术之一,Docker是开发、测试、运维的得力助手。但…

    编程 2025-04-25
  • Docker镜像管理

    一、查看所有镜像 使用docker命令可以很轻松地查看所有已经构建好的镜像,命令如下: docker images 该命令将列出所有本地docker主机上所有的镜像: REPOSI…

    编程 2025-04-25
  • Docker MySQL 5.7详解

    一、Docker简介 Docker是一种轻量级容器技术,可以轻松构建,发布和运行应用程序和服务。Docker容器类似于虚拟机,但不需要运行虚拟机本身,而是直接在主机上运行。这使得D…

    编程 2025-04-25
  • Docker内网穿透全解析

    一、什么是Docker内网穿透 Docker是一个优秀的容器化技术,可以将应用程序和服务打包成轻量级的容器进行管理和部署。但是,Docker容器默认只能在内网环境中进行通信,如果需…

    编程 2025-04-25

发表回复

登录后才能评论