企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 1. 环境准备 **1. 确认安装了docker插件** ![](https://img.kancloud.cn/41/77/4177dde3874e56b7c143f219d0d30481_1032x367.png) **2. 配置docker服务可以被外部连接** ``` vim /usr/lib/systemd/system/docker.service ``` 添加`-H tcp://0.0.0.0:2375`配置2375端口可连接 ![](https://img.kancloud.cn/4e/4d/4e4dcda63af95359fcffd0b5140e9d46_1170x455.png) > 注意:2375端口的防火墙配置 **3. 配置idea连接docker** `在File–> Settings–>Build,Execution,Deployment中找到Docker` ![](https://img.kancloud.cn/94/70/9470b66329aad1b237a63d464651e90c_1000x713.png) 4. 创建springboot测试项目,并修改pom文件添加docker相关插件 ![](https://img.kancloud.cn/73/7c/737c81fbfe631b18bc8ddbd108b2d688_1136x464.png) # 2. 利用maven打包镜像 ~~~ <!--使用docker-maven-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--将插件绑定在package这个phase上。也就是说, 用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名,这里是我们的项目名--> <imageName>${project.artifactId}</imageName> <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!-- 指定我们项目中Dockerfile文件的路径--> <dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory> <!--指定远程docker 地址--> <dockerHost>http://192.168.56.10:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar包所在的路径 此处配置的即对应项目中target目录--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>*.jar</include> </resource> </resources> </configuration> </plugin> ~~~ 5. 添加Dock而file文件,resource目录下,上一步指定 > 这里添加的jar包是路径是上一步配置好的 <resource> 中的target和dictionary ~~~ FROM java:8 EXPOSE 8080 VOLUME /tmp ADD springboot-docker-0.0.1-SNAPSHOT.jar springboot-docker.jar RUN bash -c 'touch /springboot-docker.jar' ENTRYPOINT ["java","-jar","/springboot-docker.jar"] ~~~ 6. 打包生成镜像 pom文件已经配置,package时会进行镜像build 7. 如下图 docker镜像已经发布 ![](https://img.kancloud.cn/72/f5/72f544e64fea1ed3f71e1c24b8dcd65e_848x100.png) 8. 根据镜像运行container ![](https://img.kancloud.cn/98/26/9826624abcf8520a497bf7c48bcd07cc_437x205.png) 找到镜像,右创建容器 ![](https://img.kancloud.cn/26/01/26018cf9303f7e39a9db8b79378c39a4_598x281.png) 配置暴露的端口和容器名称 ![](https://img.kancloud.cn/29/cb/29cbc897202012d1e940f48176f3e119_638x530.png) 运行成功 ![](https://img.kancloud.cn/7b/4b/7b4b79e6208cc99cfc1fb003ba4af740_667x141.png) # 3. 利用configuration打包镜像 1. Dockerfile放在项目根路径下 ~~~ FROM java:8 EXPOSE 8080 VOLUME /tmp:/tmp ADD target/springboot-docker-0.0.1-SNAPSHOT.jar /springboot-docker.jar RUN bash -c 'touch /springboot-docker.jar' ENTRYPOINT ["java","-jar","/springboot-docker.jar"] ~~~ 2. Edit Configuration 这里可以动态指定tag ![](https://img.kancloud.cn/d9/01/d90115e195eb372a179f5b2a82094567_1094x692.png) 3. run 上一步勾选了直接运行容器 ![](https://img.kancloud.cn/65/e6/65e6af072523aac98743cfe49f557e79_902x322.png) ![](https://img.kancloud.cn/32/78/327809dedf58e30db98b087efef2d3f5_1881x272.png)