docker-compose 配置spring环境的方法步骤
最近需要打包项目给成员们进行测试,但打包运行后很影响开发,于是打算使用docker模拟生产环境运行打包后的项目,这样就能既开发,又能给成员进行测试了。
由于原项目过大,打算先拿软件工程的大实验试试水,软件工程大实验使用的是spring-boot,redis,mysql,angular,nginx这些环境,先试了试后台的spring-boot,redis,mysql的docker搭建。
docker-compose
compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。compose定位是定义和运行多个docker容器的应用。
我们都知道,使用一个Dockerfile模版文件就可以创建一个应用容器,但通常在一个项目中,需要多个应用容器,就像我的后台,同时需要jdk8、redis、mysql这些应用。docker-compose刚好满足了这样的需求。它允许用户通过一个单独的docker-compose.yml模版文件来定义一组相关联的应用容器为一个项目。
compose中两个重要的概念:
服务(service):一个应用的容器,实际可以包括若干运行相同镜像的容器实例。
项目(project):由一组关联的应用容器组成的一个完整的业务单元,在docker-compose.yml文件中定义。
服务就是我们需要的docker容器,项目就是由许多服务构成的,了解了docker-compose之后就可以进行环境搭建了。
搭建spring-boot
为了编译spring-boot,基于以下流程:
- 基于jdk8镜像
- 将spring-boot下的mvnw、pom.xml复制到容器中,导入maven依赖
- 将src目录下的源码复制到容器中,使用maven打包spring-boot项目
- 使用jre8环境运行项目
构建的Dockerfile文件:
####建立spring-boot项目 FROMopenjdk:8-jdk-alpineasbuild #设置项目在docker容器中工作目录 WORKDIR/app #将maven可执行程序复制到容器中 COPYmvnw. COPY.mvn.mvn #复制pom.xml文件 COPYpom.xml. #导入所有maven依赖 RUN./mvnwdependency:go-offline-B #复制项目源代码 COPYsrcsrc #打包应用程序 RUN./mvnwpackage-DskipTests RUNmkdir-ptarget/dependency&&(cdtarget/dependency;jar-xf../*.jar) ####设置能运行应用程序的最小docker容器 FROMopenjdk:8-jre-alpine ARGDEPENDENCY=/app/target/dependency #Copyprojectdependenciesfromthebuildstage COPY--from=build${DEPENDENCY}/BOOT-INF/lib/app/lib COPY--from=build${DEPENDENCY}/META-INF/app/META-INF COPY--from=build${DEPENDENCY}/BOOT-INF/classes/app ENTRYPOINT["java","-cp","app:app/lib/*","com.xiang.airTicket.AirTicketApplication"]
docker-compose集成项目服务
完成了spring-boot的容器构建后,就可以使用docker-compose集成spring-boot、redis、mysql容器了。具体思路:
- 声明项目
- 声明项目需要集成的服务
docker-compose.yml文件:
version:'3.7' #定义服务 services: #spring-boot服务 app-server: build: context:.#配置需要构建Dockerfile的路径相对于docker-compose.yml dockerfile:Dockerfile ports: -"8080:8080"#将本机8080端口映射到容器8080端口 restart:always depends_on: -db#需要依赖的服务率先构建 -redis environment:#设置环境变量 SPRING_DATASOURCE_URL:jdbc:mysql://db:3306/airTicket?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false SPRING_DATASOURCE_USERNAME:root SPRING_DATASOURCE_PASSWORD:123456 SPRING_REDIS.HOST:redis networks:#网络连接mysql和redis -backend db: image:mysql:5.6 ports: -"3306:3306" restart:always environment: MYSQL_DATABASE:airTicket MYSQL_USER:htx MYSQL_PASSWORD:123456 MYSQL_ROOT_PASSWORD:123456 volumes: -db-data:/var/lib/mysql networks: -backend redis: image:redis command:["redis-server","--protected-mode","no"] hostname: redis ports: -"6379:6379" networks: -backend volumes: db-data: networks: backend:
使用docker-composebuild构建项目容器:
后续
这次只构建了后台,希望能把前台的angular、nginx也构建完毕,争取一条docker命令,就直接启动应用程序。
参考链接:SpringBoot,Mysql,Reactdockercomposeexample
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。