一、 docker开启近程连贯拜访
首先咱们要开启docker的近程连贯拜访。保障不是docker所在的服务器,也可能近程拜访docker。
Linux版的docker:
1、批改 docker.service 文件,增加监听端口 -H tcp://0.0.0.0:2375
vi /usr/lib/systemd/system/docker.service
找到 ExecStart,在最初面增加 -H tcp://0.0.0.0:2375,如下图所示
2、重启docker
systemctl daemon-reloadsystemctl start docker
3、如果咱们有防火前记得增加防火墙策略或者敞开防火墙。
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
二、 配置我的项目
举荐一个开源收费的 Spring Boot 最全教程:
https://github.com/javastacks/spring-boot-best-practice
- 批改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=9090eureka.instance.hostname=127.0.0.1# 是否将其注册到注册核心, 如果不是集群环境,falseeureka.client.register-with-eureka=false# 是否检索服务,单机状况下为falseeureka.client.fetch-registry=falseeureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
② 找到我的项目启动类,增加@EnableEurekaServer注解
@EnableEurekaServer@SpringBootApplicationpublic 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:8VOLUME /tmpADD *.jar app.jarEXPOSE 9090ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
咱们增加了一个VOLUME指向“/ tmp”的内容,因为这是Spring Boot应用程序默认为Tomcat创立工作目录的中央。成果是在“/var/lib/docker”下的主机上创立一个临时文件,并将其链接到“/ tmp”下的容器。对于咱们在此处编写的简略应用程序,此步骤是可选的,但如果须要在文件系统中理论编写,则对于其余Spring Boot应用程序可能是必须的。
为了缩小Tomcat的启动工夫,咱们增加了一个指向“/dev/urandom”的零碎属性作为熵源。如果您应用Tomcat(或任何其余Web服务器)的“规范”版本,则不须要更新版本的Spring Boot。
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插件窗口,启动对应我的项目的容器就能够了。环境:jdk1.8及以上。、Maven 3.2+
参考:
- https://www.cnblogs.com/hsz-c...
- https://spring.io/guides/gs/s...
原文:https://blog.csdn.net/qq_3597...
近期热文举荐:
1.1,000+ 道 Java面试题及答案整顿(2022最新版)
2.劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4.别再写满屏的爆爆爆炸类了,试试装璜器模式,这才是优雅的形式!!
5.《Java开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞+转发哦!