美文网首页Spring cloud
Docker 部署 Spring Boot 应用

Docker 部署 Spring Boot 应用

作者: WeiminSun | 来源:发表于2019-01-17 16:05 被阅读29次

    一个 Spring Boot 应用在开发完成后,我们可以打包成一个 jar 文件直接运行。通常使用 nohup java -jar app.jar & (或写个脚本) 的方式使其在服务器后台运行。
    Docker 技术的发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,借助 Docker 我们可以做到运行环境与服务器环境的隔离,同时可以方便的管理发布版本。通过版本 tag 不仅可以方便的回滚到相应版本,使用端口映射也可以方便的配合蓝绿发布。
    本文测试和开发环境如下:

    CentOS Linux release 7.6.1810 
    Spring Boot 2.1.2.RELEASE
    Apache Maven 3.0.5 (Red Hat 3.0.5-17)
    Java version: 1.8.0_162
    Docker version 18.09.1, build 4c52b90
    

    1. 先做一个简单的Spring Boot Web 工程

    1.1 Boot版本和依赖如下:

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    </dependencies>
    

    1.2 创建一个简单的Controller:

    @RestController
    public class DockerController {
        
        @RequestMapping("/hello")
        public String index() {
            return "Hello Docker!";
        }
    }
    

    1.3 启动Spring Boot,简单测试可用。

    http://localhost:8080/hello

    2. Spring Boot 项目添加 Docker 支持

    2.1 在 pom.xml的properties中添加 Docker 镜像名称:

    <properties>
            <docker.image.prefix>springboot</docker.image.prefix>
    </properties>
    

    2.2 plugins 中添加 Docker 构建插件:

    <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
     </plugin>
    

    2.3 在工程中创建目录src/main/docker,并在其下创建 Dockerfile 文件

    Dockerfile 文件用来说明如何来构建镜像。

    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    ADD hello-docker-0.0.1-SNAPSHOT.jar helloapp.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/helloapp.jar"]
    

    Dockerfile 文件很简单,首先构建 Jdk 基础环境,然后添加 Spring Boot Jar 到镜像中:

    -FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
    -VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
    -ADD ,拷贝文件并且重命名
    -ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
    

    3. 准备构建打包环境

    在Windows上打包构建不是特别方便,故选取CentOS为例。

    3.1 Docker

    3.1.1 Docker 要求 CentOS 系统的内核版本高于 3.10

    查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

    [root@spark ~]# uname -r
    3.10.0-693.el7.x86_64
    

    3.1.2 使用 root 权限登录 Centos。确保 yum 包更新到最新。

    [root@spark ~]# sudo yum update
    Loaded plugins: fastestmirror, langpacks
    base                                                                                                                                                                      | 3.6 kB  00:00:00
    extras
    .....以下省略.....
    

    3.1.3 卸载旧版本(如果安装过旧版本的话)

    $ sudo yum remove docker docker-common docker-selinux docker-engine

    [root@spark ~]# sudo yum remove docker  docker-common docker-selinux docker-engine
    Loaded plugins: fastestmirror, langpacks
    No Match for argument: docker
    No Match for argument: docker-common
    No Match for argument: docker-engine
    Resolving Dependencies
    --> Running transaction check
    ---> Package container-selinux.noarch 2:2.74-1.el7 will be erased
    --> Processing Dependency: container-selinux >= 2.9 for package: docker-ce-18.03.1.ce-1.el7.centos.x86_64
    --> Running transaction check
    ---> Package docker-ce.x86_64 0:18.03.1.ce-1.el7.centos will be erased
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =================================================================================================================================================================================================
     Package                                        Arch                                Version                                                 Repository                                      Size
    =================================================================================================================================================================================================
    Removing:
     container-selinux                              noarch                              2:2.74-1.el7                                            @extras                                         37 k
    Removing for dependencies:
     docker-ce                                      x86_64                              18.03.1.ce-1.el7.centos                                 @docker-ce-stable                              151 M
    
    Transaction Summary
    =================================================================================================================================================================================================
    Remove  1 Package (+1 Dependent package)
    
    Installed size: 151 M
    Is this ok [y/N]: y
    Downloading packages:
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Erasing    : docker-ce-18.03.1.ce-1.el7.centos.x86_64                                                                                                                                      1/2
      Erasing    : 2:container-selinux-2.74-1.el7.noarch                                                                                                                                         2/2
      Verifying  : 2:container-selinux-2.74-1.el7.noarch                                                                                                                                         1/2
      Verifying  : docker-ce-18.03.1.ce-1.el7.centos.x86_64                                                                                                                                      2/2
    
    Removed:
      container-selinux.noarch 2:2.74-1.el7
    
    Dependency Removed:
      docker-ce.x86_64 0:18.03.1.ce-1.el7.centos
    
    Complete!
    
    

    3.1.4 安装需要的软件包

    yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

    [root@spark ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.163.com
     * updates: centos.ustc.edu.cn
    base                                                                                                                                                                      | 3.6 kB  00:00:00
    extras                                                                                                                                                                    | 3.4 kB  00:00:00
    mysql-connectors-community                                                                                                                                                | 2.5 kB  00:00:00
    mysql-tools-community                                                                                                                                                     | 2.5 kB  00:00:00
    mysql57-community                                                                                                                                                         | 2.5 kB  00:00:00
    updates                                                                                                                                                                   | 3.4 kB  00:00:00
    mysql-connectors-community/x86_64/primary_db                                                                                                                              |  29 kB  00:00:00
    Package yum-utils-1.1.31-50.el7.noarch already installed and latest version
    Package device-mapper-persistent-data-0.7.3-3.el7.x86_64 already installed and latest version
    Package 7:lvm2-2.02.180-10.el7_6.2.x86_64 already installed and latest version
    Nothing to do
    

    3.1.5 设置yum源

    [root@spark ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    Loaded plugins: fastestmirror, langpacks
    adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
    grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
    repo saved to /etc/yum.repos.d/docker-ce.repo
    

    3.1.6 查看所有仓库中所有docker版本

    [root@spark ~]# yum list docker-ce --showduplicates | sort -r
     * updates: centos.ustc.edu.cn
    Loading mirror speeds from cached hostfile
    Loaded plugins: fastestmirror, langpacks
     * extras: mirrors.163.com
    docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
    docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
    docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
    docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
    docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
     * base: mirrors.163.com
    Available Packages
    
    

    3.1.7 安装

    [root@spark ~]# sudo yum install docker-ce
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: mirrors.163.com
     * extras: mirrors.163.com
     * updates: centos.ustc.edu.cn
    Resolving Dependencies
    --> Running transaction check
    ---> Package docker-ce.x86_64 3:18.09.1-3.el7 will be installed
    --> Processing Dependency: container-selinux >= 2.9 for package: 3:docker-ce-18.09.1-3.el7.x86_64
    --> Processing Dependency: containerd.io for package: 3:docker-ce-18.09.1-3.el7.x86_64
    --> Processing Dependency: docker-ce-cli for package: 3:docker-ce-18.09.1-3.el7.x86_64
    --> Running transaction check
    ---> Package container-selinux.noarch 2:2.74-1.el7 will be installed
    ---> Package containerd.io.x86_64 0:1.2.2-3.el7 will be installed
    ---> Package docker-ce-cli.x86_64 1:18.09.1-3.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =================================================================================================================================================================================================
     Package                                           Arch                                   Version                                         Repository                                        Size
    =================================================================================================================================================================================================
    Installing:
     docker-ce                                         x86_64                                 3:18.09.1-3.el7                                 docker-ce-stable                                  19 M
    Installing for dependencies:
     container-selinux                                 noarch                                 2:2.74-1.el7                                    extras                                            38 k
     containerd.io                                     x86_64                                 1.2.2-3.el7                                     docker-ce-stable                                  22 M
     docker-ce-cli                                     x86_64                                 1:18.09.1-3.el7                                 docker-ce-stable                                  14 M
    
    Transaction Summary
    =================================================================================================================================================================================================
    Install  1 Package (+3 Dependent packages)
    
    Total download size: 55 M
    Installed size: 235 M
    Is this ok [y/d/N]: N
    Exiting on user command
    Your transaction was saved, rerun it with:
     yum load-transaction /tmp/yum_save_tx.2019-01-16.08-57.CfQg8F.yumtx
    

    3.1.8 旧版本存在错误

    因为之前已经安装过旧版本的docker,在安装的时候或许有类似报错:

    Transaction check error:
      file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
      file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
      file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
      file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
    

    可以卸载旧版本的包

    $ sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
    

    3.2 启动

    3.3 使用Docker 中国加速器

    vi /etc/docker/daemon.json

    {
        "registry-mirrors": ["https://registry.docker-cn.com"],
        "live-restore": true
    }
    

    重新启动docker,注意上面文件准确, 否则会出错。

    systemctl restart docker
    

    3.4 安装JDK和Maven

    此处略过过程,不清楚者可以搜索。

    4. 使用 Docker 部署 Spring Boot 项目

    把工程copy到CentOS,

    4.1 可以先做个测试:

    mvn package
    
    java -jar target/hello-docker-0.0.1-SNAPSHOT.jar
    

    4.2 构建

    [root@spark hello-docker]# mvn package docker:build

    [root@spark hello-docker]# mvn package docker:build
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building hello-docker 0.0.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ hello-docker ---
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 1 resource
    [INFO] Copying 0 resource
    [INFO]
    [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ hello-docker ---
    [INFO] Nothing to compile - all classes are up to date
    [INFO]
    [INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ hello-docker ---
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] skip non existing resourceDirectory /root/wsun/hello-docker/src/test/resources
    [INFO]
    [INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ hello-docker ---
    [INFO] Nothing to compile - all classes are up to date
    [INFO]
    [INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ hello-docker ---
    [INFO]
    [INFO] -------------------------------------------------------
    [INFO]  T E S T S
    [INFO] -------------------------------------------------------
    [INFO] Running com.example.demo.HelloDockerApplicationTests
    15:02:30.699 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.demo.HelloDockerApplicationTests]
    ..............此处省略一大段.................
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.1.2.RELEASE)
    
    2019-01-16 15:02:33.921  INFO 112939 --- [           main] c.e.demo.HelloDockerApplicationTests     : Starting HelloDockerApplicationTests on spark with PID 112939 (started by root in /root/wsun/hello-docker)
    2019-01-16 15:02:33.922  INFO 112939 --- [           main] c.e.demo.HelloDockerApplicationTests     : No active profile set, falling back to default profiles: default
    2019-01-16 15:02:37.613  INFO 112939 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2019-01-16 15:02:38.355  INFO 112939 --- [           main] c.e.demo.HelloDockerApplicationTests     : Started HelloDockerApplicationTests in 6.782 seconds (JVM running for 8.874)
    [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.475 s - in com.example.demo.HelloDockerApplicationTests
    2019-01-16 15:02:38.844  INFO 112939 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
    [INFO]
    [INFO] Results:
    [INFO]
    [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    [INFO]
    [INFO]
    [INFO] --- maven-jar-plugin:3.1.1:jar (default-jar) @ hello-docker ---
    [INFO] Building jar: /root/wsun/hello-docker/target/hello-docker-0.0.1-SNAPSHOT.jar
    [INFO]
    [INFO] --- spring-boot-maven-plugin:2.1.2.RELEASE:repackage (repackage) @ hello-docker ---
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    [INFO] Replacing main artifact with repackaged archive
    [INFO]
    [INFO] --- docker-maven-plugin:1.0.0:build (default-cli) @ hello-docker ---
    15:02:44.320 [main] DEBUG com.spotify.docker.client.DockerCertificates - /root/.docker/ca.pem, /root/.docker/key.pem or /root/.docker/cert.pem does not exist, not using SSL
    15:02:44.712 [main] DEBUG com.spotify.docker.client.DockerConfigReader - Using configfile: /root/.dockercfg
    [INFO] Using authentication suppliers: [ConfigFileRegistryAuthSupplier]
    [INFO] Copying /root/wsun/hello-docker/target/hello-docker-0.0.1-SNAPSHOT.jar -> /root/wsun/hello-docker/target/docker/hello-docker-0.0.1-SNAPSHOT.jar
    [INFO] Copying src/main/docker/Dockerfile -> /root/wsun/hello-docker/target/docker/Dockerfile
    [INFO] Building image springboot/hello-docker
    Step 1/4 : FROM openjdk:8-jdk-alpine
    
     ---> 04060a9dfc39
    Step 2/4 : VOLUME /tmp
    
     ---> Using cache
     ---> 6902c065fe96
    Step 3/4 : ADD hello-docker-0.0.1-SNAPSHOT.jar helloapp.jar
    
     ---> e176d3a85dfd
    Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/helloapp.jar"]
    
     ---> Running in ee9ce9b3d247
    Removing intermediate container ee9ce9b3d247
     ---> 865352bb0109
    ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
    Successfully built 865352bb0109
    Successfully tagged springboot/hello-docker:latest
    [INFO] Built springboot/hello-docker
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 26.952s
    [INFO] Finished at: Wed Jan 16 15:02:50 CST 2019
    [INFO] Final Memory: 28M/97M
    [INFO] ------------------------------------------------------------------------
    
    

    4.3 查看镜像:

    [root@spark hello-docker]# docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    springboot/hello-docker   latest              865352bb0109        2 minutes ago       119MB
    

    4.4 启动

    [root@spark hello-docker]# docker run -p 8080:8080 -t springboot/hello-docker
    
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.1.2.RELEASE)
    
    2019-01-16 07:08:03.677  INFO 1 --- [           main] com.example.demo.HelloDockerApplication  : Starting HelloDockerApplication v0.0.1-SNAPSHOT on e4a6703bcdeb with PID 1 (/helloapp.jar started by root in /)
    2019-01-16 07:08:03.680  INFO 1 --- [           main] com.example.demo.HelloDockerApplication  : No active profile set, falling back to default profiles: default
    2019-01-16 07:08:08.768  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2019-01-16 07:08:08.941  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2019-01-16 07:08:08.941  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.14]
    2019-01-16 07:08:08.988  INFO 1 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
    2019-01-16 07:08:09.273  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2019-01-16 07:08:09.273  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 5353 ms
    2019-01-16 07:08:10.058  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2019-01-16 07:08:10.763  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2019-01-16 07:08:10.796  INFO 1 --- [           main] com.example.demo.HelloDockerApplication  : Started HelloDockerApplication in 8.838 seconds (JVM running for 10.178)
    
    [root@spark hello-docker]# docker ps
    CONTAINER ID        IMAGE                     COMMAND                  CREATED              STATUS              PORTS                    NAMES
    e4a6703bcdeb        springboot/hello-docker   "java -Djava.securit…"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   serene_buck
    

    4.5 测试

    image.png

    5. 使用jar包部署

    我们习惯于windows下IDE开发,也可以采用先打了Jar包,然后在Linux上做镜像。

    5.1 windows环境构建jar包

    在centos7 ~ 创建一个文件夹docker 里面放置 上面的Dockerfile 和 springBoot 打包的项目

    [root@spark docker]# ls
    Dockerfile  hello-docker-0.0.1-SNAPSHOT.jar
    

    创建一个新的Dockerfile:

    [root@spark docker]# cat Dockerfile
    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    ADD hello-docker-0.0.1-SNAPSHOT.jar helloapp1.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/helloapp1.jar"]
    

    5.2 构建镜像

    [root@spark docker]# docker build -t docker .
    Sending build context to Docker daemon  16.68MB
    Step 1/4 : FROM openjdk:8-jdk-alpine
     ---> 04060a9dfc39
    Step 2/4 : VOLUME /tmp
     ---> Using cache
     ---> 6902c065fe96
    Step 3/4 : ADD hello-docker-0.0.1-SNAPSHOT.jar helloapp1.jar
     ---> f49885f6520b
    Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/helloapp1.jar"]
     ---> Running in bd96d074f542
    Removing intermediate container bd96d074f542
     ---> d8731e6fca73
    Successfully built d8731e6fca73
    Successfully tagged docker:latest
    
    [root@spark docker]# docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    docker                    latest              d8731e6fca73        43 seconds ago      119MB
    springboot/hello-docker   latest              865352bb0109        About an hour ago   119MB
    

    5.3 启动

    [root@spark docker]# docker run -d -p 8090:8090 docker
    1badb56ee4610621c47053cd504f79835832e31e024ec0e1ae900c24e600185c
    

    5.4 测试

    相关文章

      网友评论

        本文标题:Docker 部署 Spring Boot 应用

        本文链接:https://www.haomeiwen.com/subject/ydipdqtx.html