一键部署应用到远程服务器,IDEA 官方 Docker 插件太顶了!(1)

简介: 一键部署应用到远程服务器,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,如下图所示


image.png


2、重启docker

systemctl daemon-reload
systemctl start docker

3、如果我们有防火前记得添加防火墙策略或者关闭防火墙。


window版docker


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



image.png


安装配置idea的docker插件

在File --> Settings --> Plugins 在输入框中搜索Docker,选择并安装。安装完成后重启Docker。

image.png


配置docker

在File–> Settings–>Build,Execution,Deployment中找到Docker


新建一个docker实例,然后在Engine API URL中将docker所在ip端口号填上,填完如果下面显示Connection successful证明连接docker成功。如果失败,可能是我们上一步docker开启远程连接未成功。


我们设置完成后,回到idea主界面,可以看到页面下面有一个docker窗口。点击绿色箭头,连接docker。连接上后显示Containers和Images就是我们现在docker中已经有的容器和镜像。

image.png



创建项目,并配置

一 、 创建项目

我就以一个简单的Eureka项目演示。


File–> New -->Project --> Spring Initializr



image.png

image.png

image.png





二、 配置项目

推荐一个开源免费的 Spring Boot 最全教程:


https://github.com/javastacks/spring-boot-best-practice


修改pom.xml文件,引入docker-maven-plugin插件相关配置. 改配置在 标签内

<!--使用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);
}}

添加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。



相关文章
|
6天前
|
并行计算 前端开发 异构计算
告别服务器繁忙,云上部署DeepSeek
本文以 DeepSeek-R1-Distill-Qwen-32B-FP8 为例,向您介绍如何在GPU实例上使用容器来部署量化的 DeepSeek-R1 蒸馏模型。
|
6天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
161 91
|
7天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
9天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
22天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
10天前
|
人工智能 IDE 编译器
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
72 15
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
|
14天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
72 44
|
11天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
12天前
|
机器学习/深度学习 弹性计算 人工智能
在阿里云ECS上一键部署DeepSeek-R1
Open WebUI 和 Ollama 的联合,通过集成 DeepSeek-R1 的强大功能,赋予每一位用户使用尖端 AI 技术的能力,使得复杂的 AI 技术不再是遥不可及的梦想。无论是研究人员、开发者,还是企业用户,您都能从这一创新中获得新的灵感和增长点。本文介绍通过计算巢一键部署和使用DeepSeek-R1。
在阿里云ECS上一键部署DeepSeek-R1
|
8天前
|
机器学习/深度学习 人工智能 开发者
DeepSeek服务器繁忙?拒绝稍后再试!基于阿里云PAI实现0代码一键部署DeepSeek-V3和DeepSeek-R1大模型
阿里云PAI平台支持零代码一键部署DeepSeek-V3和DeepSeek-R1大模型,用户可轻松实现从训练到部署再到推理的全流程。通过PAI Model Gallery,开发者只需简单几步即可完成模型部署,享受高效便捷的AI开发体验。具体步骤包括开通PAI服务、进入控制台选择模型、一键部署并获取调用信息。整个过程无需编写代码,极大简化了模型应用的门槛。
153 7