出门莫恨无人随,书中车马多如簇。这篇文章主要讲述无快不破,在本地 docker 运行 IDEA 里面的项目?相关的知识,希望能为你提供帮助。
前言之前我们用??docker?
?部署了??springboot?
?,??redis?
?,??mysql?
?的项目,但是是部署在三个不同的容器里,还需要先知道??redis?
?和??mysql?
?的??ip?
?地址,手动配置到??springboot?
?应用容器里,我只是想快速在本地进行测试啊,这样成本太高了,有没有什么办法,把他们集中管理呢?比如把它构建成为一个镜像。办法总是有的,那就是?
?Docker Compose?
?。之前的项目地址:https://github.com/Damaer/DemoCode/tree/main/springboot/springDocker上一篇:http://aphysia.cn/archives/ru-he-ji-yu-dockerkuai-su-da-jian-springbootmysqlredisxiang-mu-
Docker Compose1.Docker Compose是什么?
??Docker Compose?
?其实就是用来定义和运行复杂应用的??Docker?
?工具,什么叫复杂应用,比如前面写的??springboot?
?+??redis?
?+??mysql?
?,里面就有三个容器,这种多个容器的,用一个工具来管理,它不香么?
docker compose 通过配置文件来管理多个 ?2. Docker Compose 的具体步骤?Docker?
? 容器,在配置文件中,所有的容器通过??service?
?来进行定义,然后使用??docker-compose?
?脚本来启动、停止、重启应用以及应用中的服务和所依赖的容器等。
一般是三个步骤:
- 使用?
?Dockerfile?
? 来定义应用程序的环境 - 在 ?
?docker-compose.yml?
? 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。 - 执行 ?
?docker-compose up?
? 命令来启动并运行整个应用程序。
?Mac OS?
?,装??Docker?
?的时候已经把??Docker Compose?
?也安装好了,不需要单独安装。3. 如何在IDEA项目里面使用Docker Compose
首先?
?pom.xml?
?文件中需要注意配置小写的??artifactId?
?:< groupId> com.aphysia< /groupId>
< artifactId> dockerdemo< /artifactId>
< version> 0.0.1-SNAPSHOT< /version>
< name> dockerdemo< /name>
< packaging> jar< /packaging>
除此之外还需要配置插件:
< build>
< plugins>
< plugin>
< groupId> org.springframework.boot< /groupId>
< artifactId> spring-boot-maven-plugin< /artifactId>
< /plugin>
< plugin>
< groupId> com.spotify< /groupId>
< artifactId> docker-maven-plugin< /artifactId>
< version> 1.0.0< /version>
< !-- 将插件绑定在某个phase执行 -->
< executions>
< execution>
< id> build-image< /id>
< !-- 用户只需执行mvn package ,就会自动执行mvn docker:build -->
< phase> package< /phase>
< goals>
< goal> build< /goal>
< /goals>
< /execution>
< /executions>
< configuration>
< imageName> $docker.image.prefix/$project.artifactId< /imageName>
< dockerDirectory> src/main/docker< /dockerDirectory>
< resources>
< resource>
< targetPath> /< /targetPath>
< directory> $project.build.directory< /directory>
< include> $project.build.finalName.jar< /include>
< /resource>
< /resources>
< /configuration>
< /plugin>
< /plugins>
< /build>
除此之外,?
?Dockerfile?
?是必要的,上面的插件中已经配置了我们??dockerFile?
?需要放在??src/main/docker?
?这个位置,??DockerFile?
?里面配置如下:FROM openjdk:8-jdk-alpine
EXPOSE 8081
VOLUME /tmp
# 重写命名为app.jar
ADD dockerdemo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
理论上到这个时候,我们使用?
?mvn clean package?
?就会生成对应的??jar?
?包:?
?docker compose?
?最重要的是配置??docker-compose.yml?
?,这个文件我们放在项目的根目录就可以,和??pom.xml?
?平级:version: "3"
services:
redis:
image: redis:latest
restart: always
ports:
- "6389:6379"
volumes:
- /tmp/redis.conf:/etc/redis/redis.conf
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_USER: root
MYSQL_PASS: 123456
ports:
- "3306:3306"
volumes:
- "./db:/var/lib/mysql"
- "./conf/my.cnf:/etc/my.cnf"
- "./init:/docker-entrypoint-initdb.d/"
# 指定服务名称
webapp:
# 指定服务使用的镜像
image: aphysia/dockerdemo
# 指定容器名称
container_name: dockerdemo
# 指定服务运行的端口
ports:
- 8081:8081
# 指定容器中需要挂载的文件
volumes:
- /etc/localtime:/etc/localtime
- /tmp/dockerdemo/logs:/var/logs
【无快不破,在本地 docker 运行 IDEA 里面的项目()】值得注意的点:
- service里面就是我们配置的镜像,包含了?
?redis?
?,??mysql?
?,??webapp?
?,??webapp?
?其实就是我们的应用。 - ?
?"6389:6379"?
?中??6389?
?其实是我们主机的端口,也就是我的??Mac?
?连接?推荐阅读
- #私藏项目实操分享# SAP 电商云 Spartacus UI 的 checkout 场景中的串行请求设计分析
- #yyds干货盘点#Vue-Router路由所有相关方法讲解(全),实战教学含登录拦截,建议收藏
- #yyds干货盘点#JavaScript之彻底理解原型与原型链
- #yyds干货盘点# InnoDB解决幻读的方案--LBCC&MVCC
- 迁移到新的Web主机后显示的WordPress模板
- 自定义帖子类型的WordPress模板层次结构
- WordPress模板分配未按预期工作
- WordPress Style.css标头错误
- 具有和或条件的WordPress分类法查询