zoukankan      html  css  js  c++  java
  • docker 部署spring.boot项目【一】(引用外部配置文件)

    上一篇随笔,nginx是启动运行在容器内,spring.boot的web项目是运行在宿主内,这一篇的目的,是把web项目也制作成镜像,然后在容器里启动。

    文件目录结构如下:

    主要文件结构说明:(1)bin放的是测试用的sh启动脚本,这篇随笔里暂时没用,主要用于自己测试用的。

             (2)config放的是项目的外部配置文件,application.yml、log4j2.xml 等,众所周知,一般生产环境不会把配置文件打包到jar包里面。

             (3)lib放的是jar包

             (4)logs 日志文件夹

    理想的情况是,要挂载目录,这次我就不演示如何挂载目录

    Dockerfile的文件脚本如下:

    FROM openjdk:8-jdk-alpine
    COPY ./config /usr/web/live/config 
    COPY ./bin /usr/web/live/bin
    COPY ./logs /usr/web/live/logs
    COPY ./lib /usr/web/live/lib
    
    EXPOSE 8080
    
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom",
    "-jar",
    "-Dlogging.path=/usr/web/live/logs",
    "-Dloader.path=/usr/web/live/lib",
    "-Dlogging.config=/usr/web/live/config/log4j2.xml",
    "-Dspring.config.location=/usr/web/live/config/application.yml",
    "/usr/web/live/lib/app.jar"]

    进入dokcerfile文件同一级目录后,制作docker文件。

    docker build -t caicai/live:1.0 .

    运行

    docker run -p 8091:8080  caicai/live:1.0

    然后IE看下效果

    部署步骤大概就是上面这些。

    下面我们来验证下容器内部。前面提到的Dockfile脚本里面

    COPY ./config /usr/web/live/config
    ....

    是把宿主的指定文件夹整个复制到内容内部指定的文件夹。

    我们来验证下,首先,控制台输入:docker ps  #查看当前宿主所有运行的容器信息

    然后可以知道刚才启动的容器Id是f4f5957f99d8,那么,接着输入 docker exec -it f4f5 /bin/sh  #进入容器内部

    接着,在容器内部输入一些脚本来验证

    可以看到整个容器内部的目录,已经包含我们刚才COPY进来的文件,以及运行web项目的日志文件等信息。

    以上就是整个部署的简单过程,有很多运维缺陷,比如容器关闭之后,产生的日志没办法持久化、查看运维日志不方便等等

  • 相关阅读:
    androidstudio配置http proxy以及配置gradle
    发布jar到docker的方法
    idea直接发布项目到docker中
    安卓启动相机报错android.os.FileUriExposedException: file:///storage/emulated/0/
    centos 7.4搭建Harbor、push docker镜像以及常见错误
    dock的卸载与安装
    centos部署Kubernetes(k8s)集群
    Logback将日志输出到Kafka配置示例
    JavaScript设计模式 Item 5 --链式调用
    你不知道的JavaScript--Item27 异步编程异常解决方案
  • 原文地址:https://www.cnblogs.com/contraII/p/10224522.html
Copyright © 2011-2022 走看看