乐趣区

关于java:一键部署应用到远程服务器IDEA-官方-Docker-插件太顶了

一、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-reload
systemctl start docker

3、如果咱们有防火前记得增加防火墙策略或者敞开防火墙。

window 版 docker

在电脑左下角找到 docker 图标,鼠标右键抉择 settings。将 General 菜单下的 Expose daemon on tcp://localhost:2375 without TLS 勾选。无需重启。

装置配置 idea 的 docker 插件

  1. 在 File –> Settings –> Plugins 在输入框中搜寻 Docker,抉择并装置。装置实现后重启 Docker。
  1. 配置 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

  1. 批改 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>
  1. 配置我的项目的根本配置。(这里不是重点,一笔带过)

① 批改 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@SpringBootApplicationpublic class EurekaserverApplication {public static void main(String[] args) {SpringApplication.run(EurekaserverApplication.class, args);
}}
  1. 增加 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"]

咱们增加了一个 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。如果咱们想在启动时间接用运行打包并启动我的项目能够依照上面的操作。

  1. 咱们批改在后面咱们创立的 Docker Images 的配置。

2. 在配置启动项中找到 Before launch:Activate tool window,在这里咱们新增一个 Run Maven Gold。

  1. 咱们在这里的 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 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版