当前位置: 首页 > news >正文

Docker Compose 启动jar包项目

参考文章安装DockerDocker Compose
点击跳转

配置

创建一个文件夹存放项目例如mydata

mkdir /mydata

上传jar
假设我的jar包名称为goudan.jar

编写dockerfile文件

vim app-dockerfile

按键盘上的i进行编辑

# 使用jdk8
FROM openjdk:8-jre

# 设置时区 上海
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

# 创建镜像里的工作目录
WORKDIR /mydata/app

# 复制 JAR 包
COPY goudan.jar /mydata/app/goudan.jar

# 创建日志目录并赋予权限(有需要加上)
RUN mkdir -p /mydata/app/logs \
    && chmod -R 777 /mydata/app/logs

# Java 调优参数(示例配置,按需调整)
ENV JAVA_OPTS="-Xmx512m -Xms256m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mydata/app/logs"

# 启动命令(包含日志清理策略)
CMD java $JAVA_OPTS -Dlogging.file.path=/mydata/app/logs -jar goudan.jar

编辑完成后esc案件退出编辑, 输入:wq保存并退出

新建docker-compose.yml文件

vim docker-compose-goudan.yml

添加内容

services:
  goudan-java-web:
    build:
      context: /mydata #指定dockerfile存在的目录
      dockerfile: app-dockerfile #文件名称
    container_name: goudan-java-web #容器名称
    #network_mode: host #使用主网络network_mode: host #使用主网络
    ports:
      - 2000:2000 #映射端口 左边是本机 右边是容器里的
    volumes:
      - /mydata/home:/mydata/app/home #单独映射文件 将本机的地址映射到容器里的/mydata/app/home
      - /etc/localtime:/etc/localtime #使用系统时间
    environment:
      TZ: Asia/Shanghai #时区
    logging:
      driver: json-file
      options:
        max-size: 10m  # 单个日志文件最大 10MB
        max-file: 3    # 最多保留 3 个日志文件

当前项目目录为

mydata
--|goudan.jar
--|app-dockerfile
--|docker-compose-goudan.yml

构建和启动服务

docker-compose -f /mydata/docker-compose-web.yml up -d

-f表示指定文件如果不写, 默认为docker-compose.yml文件
-d让容器在后台运行

可以使用以下命令查看容器是否正常运行

docker ps -a

停止和清理服务

docker-compose -f /mydata/docker-compose-web.yml down

会停止并删除由 docker-compose-web.yml 创建的容器和网络

停止指定容器

docker container stop 802  #802为容器自己的id
docker ps -a #查看容器id

删除容器

docker container rm 802 #802为容器自己的id

删除镜像

docker image rm 802 #802为镜像id

查看镜像

docker images

增加滚动更新功能

修改docker-compose-goudan.yml

services:
  goudan-java-web:
    build:
      context: /mydata 
      dockerfile: app-dockerfile 
    #container_name: goudan-java-web 删除容器名称
    ports:
      - 2000:2000 
    volumes:
      - /mydata/home:/mydata/app/home 
      - /etc/localtime:/etc/localtime 
    environment:
      TZ: Asia/Shanghai 
    logging:
      driver: json-file
      options:
        max-size: 10m  
        max-file: 3   
    deploy:
      replicas: 1  # 设置服务的副本数量
      update_config:
        parallelism: 1  # 每次更新的容器数量
        delay: 10s  # 每次更新之间的间隔时间
      rollback_config:
        parallelism: 1  # 回滚时每次操作的容器数量
        delay: 10s  # 回滚时每次操作之间的间隔时间

启动命令

docker-compose -f ./docker-compose-web.yml up -d --build

查看日志
实时跟踪日志

docker logs -f 802 #802为容器id

相关文章:

  • dubbo http流量接入dubbo后端服务
  • GRS认证是什么?GRS认证有什么意义?对企业发展的好处
  • 剑指Offer49 -- DP_贪心
  • 高中数学联赛模拟试题第9套几何题
  • 使用YOLOv5训练自定义数据集
  • 阿里云云效 Maven
  • 前端技术有哪些
  • Canvas渲染管线解析:从API调用到像素落地的全过程
  • 蓝桥杯省模拟赛 阶乘求值
  • QEMU源码全解析 —— 块设备虚拟化(12)
  • 线性回归 + 基础优化算法
  • docker - compose up - d`命令解释,重复运行会覆盖原有容器吗
  • 滚珠花键的预压调整怎么做?
  • 附录C SLAC匹配过程命令定义与实际抓包
  • Go 语言标准库中math模块详细功能介绍与示例
  • GRS认证的主要步骤是什么?
  • Go 语言标准库中strings和strconv详细功能介绍与示例
  • Java基础 3.28
  • K8s Calico网络介绍
  • Z字形变换
  • 网站建设搭建环境/做网站推广的公司
  • 怎样制作时时彩网站做/如何策划一个营销方案
  • 一个服务器做两个网站吗/百度指数网页版
  • 二维码活码生成器在线制作/华为seo诊断及优化分析
  • 西宁网站建设官网/seo百科
  • 西峡做网站/2021最近比较火的营销事件