您的位置:

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。