【解决】docker一键部署报错

本文介绍了在Springboot项目中集成Docker实现一键部署时遇到的问题,包括镜像tag为none的处理和docker-compose.yml中的entrypoint设置,以确保MySQL服务初始化后再启动Web应用,从而解决启动异常。
摘要由CSDN通过智能技术生成

项目场景见:【记录】Springboot项目集成docker实现一键部署-CSDN博客

问题:

1.docker images 有tag为none的镜像存在。

2.有同事反馈,第一次启动docker-compose up -d 项目无法正常启动。后续正常。

原因:

1.服务中指定了镜像mysql:5.7,而mysql-dockerfile中也指定了,同时dockerfile中对镜像做了修改,导致出现。解决办法:删除此处image。

2.第一次启动docker-compose up -d 项目无法正常启动。经过调查发现可能是因为mysql服务启动后但是数据还未初始化完成,这是项目启动第一时间获取数据源失败导致。

解决办法:做了一个延迟处理,即mysql服务启动后一段时间再启动web应用服务。

具体docker-compose.yml文件修改如下:

    其中 entrypoint: ["sh", "-c", "sleep 20 && java -jar weiyi.jar"] 替代了原dockerfile中的启动应用命令,表示延迟20秒执行“ java -jar weiyi.jar”命令。

version : '3'
services:
  weiyi-mysql:
    container_name: weiyi-mysql
    build:
      context: .
      dockerfile: mysql-dockerfile
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
    command: [
          'mysqld',
          '--innodb-buffer-pool-size=80M',
          '--character-set-server=utf8mb4',
          '--collation-server=utf8mb4_unicode_ci',
          '--default-time-zone=+8:00',
          '--lower-case-table-names=1'
        ]
    environment:
      MYSQL_DATABASE: weiyidb
      MYSQL_ROOT_PASSWORD: xxxxx
  weiyi-server:
    container_name: weiyi-server
    build:
      context: .
      dockerfile: weiyi-dockerfile
    ports:
      - "80:80"
    volumes:
      - ./weiyi/logs:/home/weiyi/logs
      - ./weiyi/uploadPath:/home/weiyi/uploadPath
    depends_on:
      - weiyi-mysql
    entrypoint: ["sh", "-c", "sleep 20 && java -jar weiyi.jar"]

启动测试无问题:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值