在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
环境:
一、 docker开启远程连接访问首先我们要开启docker的远程连接访问。保证不是docker所在的服务器,也能够远程访问docker。 Linux版的docker: 修改docker.service文件,添加监听端口 -H tcp://0.0.0.0:2375 vi /usr/lib/systemd/system/docker.service 找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示 重启docker systemctl daemon-reload systemctl start docker 如果我们有防火前记得添加防火墙策略或者关闭防火墙。 window版docker 在电脑左下角找到docker图标,鼠标右键选择settings。 将General菜单下的Expose daemon on tcp://localhost:2375 without TLS勾选。无需重启。 安装配置idea的docker插件在File --> Settings --> Plugins 在输入框中搜索Docker,选择并安装。安装完成后重启Docker。 配置docker 在File–> Settings–>Build,Execution,Deployment中找到Docker 新建一个docker实例,然后在Engine API URL中将docker所在ip端口号填上,填完如果下面显示Connection successful证明连接docker成功。如果失败,可能是我们上一步docker开启远程连接未成功。 我们设置完成后,回到idea主界面,可以看到页面下面有一个docker窗口。点击绿色箭头,连接docker。连接上后显示Containers和Images就是我们现在docker中已经有的容器和镜像。 创建项目,并配置一 、 创建项目我就以一个简单的Eureka项目演示。 File–> New -->Project --> Spring Initializr
二、 配置项目修改pom.xml文件,引入docker-maven-plugin插件相关配置. 改配置在<plugins>标签内 <!--使用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://127.0.0.1:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar包所在的路径 此处配置的即对应项目中target目录--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> 配置项目的基本配置。( 这里不是重点,一笔带过) ①修改application.properties,添加项目相关信息。 #项目启动的端口号和IP地址 server.port=9090 eureka.instance.hostname=127.0.0.1 # 是否将其注册到注册中心, 如果不是集群环境,false eureka.client.register-with-eureka=false # 是否检索服务,单机情况下为false eureka.client.fetch-registry=false eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ ② 找到项目启动类,添加@EnableEurekaServer注解 @EnableEurekaServer @SpringBootApplication public class EurekaserverApplication { public static void main(String[] args) { SpringApplication.run(EurekaserverApplication.class, args); } } 添加Dockerfile文件。 我们在EeurekaServer\src\main\resources目录下,添加文件名为Dockerfile的文件。 如果我们docker中没有java:8 这个镜像,请先使用docker pull java:8,将镜像先拉下来。 FROM java:8 VOLUME /tmp ADD *.jar app.jar EXPOSE 9090 ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
maven打包,生成镜像使用maven打包。我们在pom.xml中配置过,如果我们是用maven的package,那么就会自动使用Dockerfile文件进行构建。 我们从控制台可以看到,已经给我构建了一个和我们项目名相同的镜像文件。 我们在docker窗口可以看到,我们的镜像库中多个一个eurekaserver:latest镜像。 创建容器,项目部署到docker我们在docker窗口中,找到我们刚才创建的镜像文件,鼠标右键,选择Create container,我们修改创建容器所需要的配置。 在Create Docker Configuration弹窗中修改Container name(容器名称) Bind ports(Ip和端口映射) 我在这里添加127.0.0.1:8080:9090. 使用本地8080端口,去访问容器的9090. 我们点击Run之后,就会自动创建容器并启动。 我们可以看到在docker插件中,多出了一个eurekaServer的容器,并且启动成功,端口号为9090. 访问容器中的项目 我们在前面设置的是使用8080端口,访问容器9090的项目。 我们使用127.0.0.1:8080访问项目,出现如下页面,证明项目启动成功。 在这里我们基本上已经完成了所有的配置。 修改项目,一键部署以后,我们启动项目可以按照下图所示,一键启动我们项目就会在docker容器中运行。 如果我们修改了项目,在使用在docker插件中启动项目,会发现在启动依然还是修改前的项目,因为我们只是启动了容器,并没有将修改后的项目重新打包并生成docker的images。 如果我们想在启动时直接用运行打包并启动项目可以按照下面的操作。 我们修改在前面我们创建的Docker Images 的配置。 2.在配置启动项中找到Before launch:Activate tool window,在这里我们新增一个Run Maven Gold。 我们在这里的Command line 中添加一个命令 package。 配置完成后保存。以后我们启动项目时都会执行maven的package命令,自动将我们打包并把项目生成docker镜像文件启动。 以后,如果我们修改项目后,都可以使用下图所示去启动。 它会自动打包创建docker镜像并启动项目。 如果我们只需要启动项目,到docker插件窗口,启动对应项目的容器就可以了。 参考https://www.cnblogs.com/hsz-csy/p/9488469.html https://spring.io/guides/gs/spring-boot-docker/ 到此这篇关于idea使用docker插件实现一键自动化部署的文章就介绍到这了,更多相关idea docker一键自动化部署内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论