如何使用docker搭建一个springboot开发环境

背景

为什么想要在docker中搭建呢,半路出家想做个前后端联调的项目。但是node或者java的版本可能会存在不兼容的问题,也就是如果在一台机器上面配置好的环境,可以在另一台机器上面是根本跑不起来的,所以这里就想到了使用docker容器的方法。配置好了之后,只需要有compose文件和代码库地址就可以运行了。

Docker

这里先贴出compose文件内容

version: "2"
services:
  redis:
    image: redis:latest
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - ./DockerData/redis/conf:/redis.conf
      - ./DockerData/redis/data:/data
  java:
    image: openjdk:latest
    container_name: java
    ports:
      - "8080:8080"
      - "80:80"
    tty: true
    volumes:
      - ./project:/home/project
  node:
    image: node:22-alpine
    container_name: node
    ports:
      - "8081:8081"
      - "8888:8888"
    tty: true
    volumes:
      - ./project:/home/project
  mysql:
    container_name: mysql56
    image: mysql:5.6
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root  # 设置 MySQL 的 root 用户密码
    volumes:
      - ./DockerData/mysql/conf:/etc/mysql/conf.d
      - ./DockerData/mysql/logs:/logs
      - ./DockerData/mysql/data/:/var/lib/mysql

这里使用的镜像,jdk的版本是17,大家可以自己找其他人已经创建好的镜像或者自己直接用centos打包一个镜像出来,node是在官方提供的搭建方法中,直接拿了最新的镜像。其他redis,mysql都可以根据自己的需要选择。这个volumes中挂载的目录,是相对于当前文件夹的,需要注意一下。tty这个参数,官方说使用compose是默认开启的,但是我尝试之后,发现如果不是显性的声明,容器是会挂掉的(我猜测是因为没有进程阻塞的问题,node也是这样)

创建项目

可以看到java中挂载的目录是在project中,这里选在在物理机上,使用IDEA创建一个springboot项目,可以先简单写一个接口创建一下测试数据,在物理机上面可以运行,就说明这个项目是能用的。

Java容器

这里说明一下,也是一个坑,通常进入容器的方式是使用/bin/bash

docker exec -it container_name /bin/bash

但是这里选择的java和node镜像里面是没有的,可以使用ash或者sh进入,容器名大家自己替换

docker exec -it container_name /bin/sh

因为是想在容器里面保持java版本的一致性,所有还是需要进入容器中设置maven,这里的镜像maven是没有的,大家可以百度一下自行安装。我是参考这个安装的Linux - 安装 maven(详细教程)_linux安装maven-CSDN博客。容器是一个简易的linux,好多的命令都没有,选择的这个java镜像连apt-get都没有。可以选择将文件下载到物理机的挂载目录中进行操作,例如解压或者写入文件之类的。

运行

直接选择使用命令的方式运行

mvn spring-boot:run

这里我刚开始还运行不起来因为在pom.xml中有这个skip

如果在xml文件中有的话就把他删了,在使用命令运行一下

结果

这样就出现了在IDEA中运行起来的效果,通过docker容器暴露的端口,也可以访问。之后只要有这个compose文件和项目的地址,在任何的机器上都可以运行,不管是linux,mac或者win上面。

通过挂载的目录去修改代码添加相应的功能,然后再容器中重启项目测试程序,大家也可以研究一下如何热加载,更加方便。这里直接创建一个开发环境,真实的项目上线还是需要打包的,我这样做只是为了开发环境更加方便。

如果是第二次进入容器的话,我发现maven会出现命令不存在的问题,这里暂时使用

source /etc/profile

这里命令在加在一下maven吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值