• (14)Docker之部署SpringBoot应用几点说明


      本文重点记录一下Docker部署SpringBoot应用时需要注意的地方。构建jar包及Docker基础知识不在范围内。

      假如SpringBoot应用使用内置的tomcat,且配置文件中不修改端口,即默认的8080

      1、构建启动

      DockerFile文件名称是demoFile,内容如下:

    FROM java:8
    VOLUME /tmp
    COPY demo.jar demo.jar
    RUN bash -c "touch /demo.jar"
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "demo.jar", "--server.port=8080"]

      目录结构如下:

      构建镜像:

    docker build -f demoFile -t demoimage .

      生成并启动容器:

    docker run -d -p xxxx:8080 --name demo demoimage

      访问地址为:http://192.168.7.151:xxxx/user

      2、替换jar包

      现在的jar包在构建镜像的时候已经放入容器了,见DockerFile中语句:copy demo.jar demo.jar。

      假如修改了jar包,要重新放到容器中该怎么办呢?使用如下命令:

    docker cp demo.jar e304979b7b3c:/demo.jar
      e304979b7b3c:指容器ID。直接覆盖替换掉,重启容器生效。容器启动或停止时都可以执行该命令。

      3、关于端口:

      1)生成并启动容器,必须指定外部、内部端口,错误示例如下:

    [root@localhost demo]# docker run -d --name demo demoimage

      2)DockerFile中server.port优先级高于SpringBoot中指定的端口,此例中EXPOSE端口无效,如下

      2.1)SpringBoot中7777,不指定EXPOSE,不指定server.port,则生成并启动容器方式为:

    docker run -d -p xxxx:7777 --name demo demoimage

      2.2)SpringBoot中7777,EXPOSE中8080,不指定server.port,则生成并启动容器方式为:

    docker run -d -p xxxx:7777 --name demo demoimage

      2.3)SpringBoot中7777,不指定EXPOSE,server.port中8081,则生成并启动容器方式为:

    docker run -d -p xxxx:8081 --name demo demoimage

      2.4)SpringBoot中7777,EXPOSE中8080,server.port中8081,则生成并启动容器方式为:

    docker run -d -p xxxx:8081 --name demo demoimage

      2.5)Windows中SpringBoot中配置了端口7777,在cmd中启动运行:

    D:	emp>java -jar demo2.jar --server.port=8080,外部访问8080生效(优先级高)

      3)同一个镜像可以生成并启动多个容器(指定的外部端口和容器名不能一样)

      4、关于VOLUME

      VOLUME /tmp:会自动(好像有问题?测试不行)在宿主机/var/lib/docker下创建一个tmp的目录,网上说是连接到容器的/tmp

      对于这块不是很明白,做些记录,希望以后有时间可以研究一下:

      1)在demoFile中不设置VOLUME /tmp,手动创建/var/lib/docker/tmp,可以成功创建镜像,并运行。

      2)在demoFile中设置VOLUME /aaaa,删除宿主机的/var/lib/docker/tmp路径,不能创建镜像,且不会自动创建/var/lib/docker/aaaa。

      3)在demoFile中设置VOLUME /aaaa,手动创建/var/lib/docker/tmp,可以成功创建镜像,并运行。不会自动创建/var/lib/docker/aaaa。

      4)只要有/var/lib/docker/tmp路径,就可以创建、运行镜像。Spring Boot使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录。

      

  • 相关阅读:
    iOS RunTime
    js本地对象的操作
    js面向对象实现切换面板
    css3上下翻页效果
    Normalize.css用法
    javasript深度拷贝
    div中div水平垂直居中
    正则表达式匹配括号内网址
    ajax聊天
    移动端px转rem的两种方法
  • 原文地址:https://www.cnblogs.com/javasl/p/13337422.html
Copyright © 2020-2023  润新知