无快不破,在本地 docker 运行 IDEA 里面的项目()

出门莫恨无人随,书中车马多如簇。这篇文章主要讲述无快不破,在本地 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 通过配置文件来管理多个 ??Docker?? 容器,在配置文件中,所有的容器通过??service??来进行定义,然后使用??docker-compose??脚本来启动、停止、重启应用以及应用中的服务和所依赖的容器等。
2. 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 里面的项目()】值得注意的点:
  1. service里面就是我们配置的镜像,包含了??redis??,??mysql??,??webapp??,??webapp??其实就是我们的应用。
  2. ??"6389:6379"??中??6389??其实是我们主机的端口,也就是我的??Mac??连接?

      推荐阅读