关于我把SpringBoot应用做成docker应用这件事

本篇文章会介绍使用dockefile方式制作镜像并启动,以及docker-compose配合dockerfile启动SpringBoot项目。本篇首发于牧码人博客转载请加上此标示。

准备工作

  1. jar包

  2. Dockerfile (跟jar包放一个位置)

    # 环境变量 容器启动后仍保留
    #ENV JAVA_OPTS="-Xms248M  -Xmx512M  -XX:PermSize=248M -XX:MaxPermSize=512M"
    
    # 指定容器运行时的参数,容器启动后就失效了,必须在from之前定义
    # ARG JAVA_OPTS="-Xms248M  -Xmx512M  -XX:PermSize=248M -XX:MaxPermSize=512M"
    
    # 以什么镜像为前提 由于是springboot应用所以需要现有java环境
    FROM java:8
    
    # 镜像构建时就会执行命令
    #RUN ["/bin/bash", "-c", "echo hello"]
    
    #容器启动时运行的命令
    # 指定这个容器启动的时候要运行的命令,不可以追加命令
    #CMD
    
    #作者
    MAINTAINER jan
    
    ## 容器的工作地址 相当于cd 
    WORKDIR /app/mblog
    
    ## 把本地的包添加到工作目录下并改名  还有一个copy原理是一样的
    ADD blog-latest.jar app.jar
    
    ##  挂载数据卷到宿主机中,容器不存储数据 
    ## 关于VOLUME如果想了解更深看这个 https://cloud.tencent.com/developer/article/1896358
    VOLUME /tmp
    
    LABEL  version="1.0" description="牧码人博客" by="牧码人" 
    
    ## 指定容器运行时的user
    USER root
    
    ## 镜像触发器
    ## 当所构建的镜像被用做其它镜像的基础镜像,该镜像中的触发器将会被钥触发
    ## ONBUILD RUN /usr/local/bin/python-build --dir /app/src
    
    ## 暴露的端口
    EXPOSE 8080
    
    # 指定运行容器启动过程执行命令,覆盖CMD参数
    # 指定这个容器启动的时候要运行的命令,可以追加命令(与CMD的区别)
    ENTRYPOINT ["java","-jar","/app/mblog/app.jar"]
    
    
    

3.docker-compose.yml(非必须,由于本人喜欢用docker-compose所以才使用了)
简述下啥是docker-compose

Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用一个YAML文件来配置应用程序的服务。然后,使用一个命令创建并启动配置中的所有服务

人话:大概就是使用docker-compose可以管理多容器的docker程序,使用一个yaml文件配置下就可以。举个例子:一个简单的java程序需要jdk环境,数据库环境,redis环境。如果不使用docker-compose你就需要多次运行。如果使用docker-compose你只需要在yaml配置好,然后docker-compose up 一下。多个应用便会同时启动。
本篇示例只讲了docker-compose管理单个容器的情况,主要是了解一下yaml的配置。使用yaml配置个人觉得比较优雅,如果不使用它那么你的docker启动命令是这样的 docker run --net=host -p 8269:8080 -v /app/mblog/storage/:/app/mblog/storage/ -d mblog:latest 参数一多这个docker命令便非常长了。

# 版本根据你的docker版本来的,目前主流应该都是3.几的版本
version: '3.8
services:
mblog:
 ## 启动前,先执行build构建镜像
 ## 等同于 docker build -t mblog:latest .
 build:
   context: .
   dockerfile: ./Dockerfile
 # 镜像名
 image: mblog:latest
 # 容器名
 container_name: mblog
 # 自动重启
 restart: always
 #端口映射
 ports:
   - 8269:8080
 # 环境变量  
 environment:
   - spring.profiles.active=mysql
   - JVM_OPTS=-server -Xmx218M -Xms1024M -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+HeapDumpOnOutOfMemoryError -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xloggc:/logs/gc.log
 # 目录映射  
 volumes:
   - /app/mblog/storage/:/app/mblog/storage/

启动命令

原生docker方式制作镜像并启动

构建镜像命令:

docker build -t mblog:latest .

启动命令

docker run --net=host -p 8269:8080 -v /app/mblog/storage/:/app/mblog/storage/ -d mblog:latest

docker-compose方式启动项目

docker-compose up -d --build

随后docker ps 查看容器是否启动成功即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值