docker部署springboot项目
本文最后更新于121 天前,其中的信息可能已经过时。
docker部署springboot项目
  • 进入容器目录

    docker exec -it dd bash   (dd是容器名)
    
  • 退出容器目录

    exit
    
  • 查看容器内服务日志

    docker logs dd  (dd是容器名)
    
  • 进入容器内部 想ping别的容器是否连通,但发现bash: ping: command not found

    解决办法如下:(3条命令,等一条执行完再执行下一条

    apt-get update
    
    
    apt install iputils-ping
    
    
    apt install net-tools
    
    

     

部署一个SpringBoot项目

  • 中间件配置文件不要写固定值

    • application.yaml

      server:
        port: 8080
      
      spring:
        profiles:
          active: dev
        datasource:
          url: jdbc:mysql://${mysql.host}:3306/hmall?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: ${mysql.password}
        data:
          redis:
            host: ${redis.host}
            password: ${redis.password}
      
    • application-dev.yaml

      mysql 是mysql容器的容器名

      redis 是 redis容器的容器名 你都可以起不一样的名字

      mysql:
        host: mysql
        password: 123456
      
      redis:
        host : redis
        password: 123456
      

  • 项目打包成jar包

  • 编写Dockerfile文件

    # 基础镜像
    FROM openjdk:21-jdk
    # 设定时区
    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    # 拷贝jar包
    COPY hm-service.jar /app.jar
    # 入口
    ENTRYPOINT ["java", "-jar", "/app.jar"]
    
  • 编写Dockercompose.yaml文件

    version: "3.8"
    
    services:
      mysql:
        image: mysql
        container_name: mysql
        ports:
          - "3306:3306"
        environment:
          TZ: Asia/Shanghai
          MYSQL_ROOT_PASSWORD: 123
        volumes:
          - "./mysql/conf:/etc/mysql/conf.d"
          - "./mysql/data:/var/lib/mysql"
          - "./mysql/init:/docker-entrypoint-initdb.d"
        networks:
          - qing-net
      redis:
        image: redis
        container_name: redis
        ports:
          - "6380:6379"
        command: redis-server --requirepass 123456
        volumes:
          - "./redis/data:/data"
          - "./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf"
          - "./redis/logs:/logs"
        networks:
          - qing-net
      qing:
        build:
          context: .
          dockerfile: Dockerfile
        container_name: qing
        ports:
          - "8090:8080"
        networks:
          - qing-net
        depends_on:
          - mysql
          - redis
    networks:
      qing-net:
        name: qing
    
  • 为此服务专门新建一个文件夹 可以是如此:

    • mysql容器挂载数据卷 要把文件夹新建出来,Dockercompose不会新建文件夹,redis也是如此,那些不是文件夹挂载而是文件挂载不必新建
    • Dockercompose.yaml 与宿主机mysql文件夹的相对路径要看明白才能写挂载路径,(这里写的就是我这样的同一层目录
    • 如果对mysql 、redis 有特别的一些配置可以自己写conf文件到相应的文件夹中,目前我只需要mysql中保存一些程序需要数据文件,即可以在init文件夹中放入sql文件。
  • 切换到jar包路径 cd /root/apps/qingapp

  • 启动docker-compose命令 没问题就是部署成功了

    docker compose up -d
    

如果启动出现错误,或许是哪里没配对(不要慌。我们需要停止该项目已经启动的全部容器 在按照docker给出的错误提示信息检查就行了

  • 还要记得把项目容器的镜像删除掉,要不然下次构建容器时会先构建镜像,然鹅这时镜像已经存在。redis.mysql这些镜像都是官方提供一般不会有错。

    docker rmi qingapp-qing 
    

     

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇