Idea使用docker插件部署服务到远程服务器

一、docker部署单个服务

1、Idea安装docker插件

首先给Idea安装docker插件,方式为:File ——> Settings ——> Plugins,安装后重启IDE

2、配置远程docker主机

1)首先登陆远程docker主机,修改配置文件 /usr/lib/systemd/system/docker.service

#vim /usr/lib/systemd/system/docker.service

打开文件,找到 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 这一行,在后面添加-H tcp://0.0.0.0:2375,表示打开2375端口,支持远程连接docker

2)修改文件后保存,重新加载配置文件并重启docker服务

#systemctl daemon-reload

#systemctl restart docker.service

3)Idea配置docker主机,File ——> Settings ——>Build,Execution,Depolyment ——> Docker,添加一个Docker主机,TCP socket中添加远程主机+端口,以tcp://开头,

tcp://192.168.0.6:2375,添加后会自动连接远程docker主机,下方看到connection successful表示连接成功,否则表示连接失败。

4)docker主机连接成功后,在docker插件面板中可以看到docker主机的容器和镜像,以及docker容器运行的日志等信息

3、创建Dockerfile文件

在服务根目录创建docker文件夹,路径如下

在docker目录创建一个Dockerfile文件,内容:

FROM java:8
VOLUME /tmp
ADD land-service-hi.jar app.jar
EXPOSE 8800
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

内容参数解释见docker

4、配置pom文件

在build的plugins插件标签中添加:

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <!-- 打包成可执行jar包 -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>utf-8</encoding>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--指定docker文件目录-->
                    <dockerDirectory>${project.basedir}/docker</dockerDirectory>
                    <!--指定生成的镜像名-->
                    <imageName>land/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!--指定远程 docker api地址-->
                    <dockerHost>http://192.168.0.6: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>
        </plugins>

5)打包部署

通过上面一系列配置后,maven打包服务时将自动build 镜像到远程主机,通过docker插件的面板可以看到镜像已经推送到远程主机

#mvn clean package -DskipTests

二、docker部署多个服务

1、服务创建容器

给每个服务都进行上面的配置后,使用maven在父项目打包时,将自动上传所有服务的镜像到远程docker主机。这样,虽然上传了服务镜像到远程主机,但远程主机并没有创建和启动对应的容器。

方法:可以通过在docker面板手动创建容器,以后每次使用maven打包服务时,不仅会上传镜像同时还会自动重启远程主机的docker容器。

同样地,为每个服务手动创建一个容器,然后在项目根目录打包时,每个服务的镜像都会上传到远程docker主机并自动重启容器。

2、使用docker-compose

可以使用上面手动创建容器的方法,让远程docker主机启动容器。也可以待各个服务镜像上传到远程主机后,使用docker-compose完成服务编排,然后启动各个微服务。

1)在远程docker主机编辑docker-compose.yml文件

version: ‘2‘
services:
  land-eureka:
    image: land/land-eureka:latest
    container_name: land-eureka
    ports:
      - ‘8761:8761‘

  land-zuul:
    image: land/land-zuul:latest
    container_name: land-zuul
    ports:
      - ‘9000:9000‘

  land-netty:
    image: land/land-netty:latest
    container_name: land-netty
    ports:
      - ‘8000:8000‘

  land-service-hi:
    image: land/land-service-hi:latest
    container_name: land-service-hi
    ports:
      - ‘8800:8800‘

  land-service-consumer:
    image: land/land-service-consumer:latest
    container_name: land-service-consumer
    ports:
      - ‘8801:8801‘

2)在docker-compose.yml文件目录下运行docker-compose命令,启动容器

#docker-compose up -d

原文地址:https://www.cnblogs.com/alan6/p/11876567.html

时间: 2024-08-02 02:01:32

Idea使用docker插件部署服务到远程服务器的相关文章

Docker(八)用docker compose部署服务

用docker compose部署服务 docker compose可以方便我们快捷高效地管理容器的启动.停止.重启等操作,它类似linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比如用什么镜像.数据卷.网络模式.监听端口等信息.我们可以在一个compose文件中定义一个多容器的应用,然后通过该compose来启动这个应用. 下载安装docker-compose # curl -L https://github.com/docker/compose/release

docker安装步骤及基于docker容器部署web应用LNMP服务器环境

docker的介绍 docker的定义: 1.docker的三个概念:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器Docker 镜像 - Docker images: Docker 镜像是 Docker 容器运行时的只读模板Docker 仓库 - Docker registeries: Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库(Docker Hub)Docker 容器 - Docker containers:每一个 Docke

部署项目到远程服务器

JavaWeb 甚至 Html 都还没开始学,我就鼓捣着部署到服务器的活,是不是有点装逼嫌疑? 其实,学习 JavaWeb 纯属于个人兴趣,兴趣的起源就是搭建自己的网站,所以在一开始写 HelloWorld 的时候,就把它打包部署到远程服务器上,让任何人都可通过浏览器进行访问(虽然并没有人)我的 HelloWorld 页面,这可以大大激发我的积极性. 前期准备: 首先我们得有一个云主机才行,露珠的是在腾讯云租的最低配置的 centos7 服务器,在校大学生有优惠,一个月一块钱. 在 centos

使用docker compose部署服务

谈到微服务的话题,技术上我们往往会涉及到多服务.多容器的部署与管理. Docker 有三个主要的作用:Build, Ship和Run.使用docker compose我们可以在Run的层面解决很多实际问题,如:通过创建compose(基于YUML语法)文件,在这个文件上面描述应用的架构,如使用什么镜像.数据卷.网络.绑定服务端口等等,然后再用一条命令就可以管理所有的服务(如启动.停止.重启.日志监控等等). 本文通过发布3个APP(App1,App2,App3),来演示Docker在服务发布.网

Windows部署服务(WDS)

一.安装Windows部署服务(WDS) 1.选择"开始-程序-管理工具-服务器管理器",打开"服务器管理器"控制台,选择"角色"选项,单击"添加角色"链接,运行"添加角色向导 2.在"选择服务器角色"对话框中,选中"windows 部署服务"复选框,如图1-1 图1-1选择服务角色 3.在"选择角色服务"对话框中,选中"部署服务器"复选

docker 容器部署

目录 docker 介绍 1 容器操作 2 网络和数据卷 3 应用部署 4 备份迁移 5 dockerfile 6 私有仓库 docker 介绍 # 1 docker概念: -版本(17.x以上,都是新版本),docker ce 和docker ee -轻量级,环境问题(开发一套环境,运维一套环境) -镜像和容器:镜像是一系列文件:redis镜像(linux系统+redis软件) 容器:当成操作系统 -隔离:容器里部署我的项目 -宿主机:运行docker软件的机器 -c/s架构:通过resful

使用WDS部署服务批量安装操作系统

一.什么是WDS wds的全称为Windows部署服务(Windows  DEployment Services),主要应用于大中型网络中的计算机操作系统的批量化部署.通过使用WDS可以管理映像以及无人参与安装脚本,并提供人工参与安装和无人参与安装的方式,大大提升部署操作系统的速度. 二.WDS服务部署环境 1.DNS 2.DHCP 3.AD服务 三.实验拓扑图 四.实验步骤 1.实验环境 1.1).把一台服务器加入到域中不用是额外DC,普通的成员服务器即可.确定相关角色已经安装成功. 1.2)

在docker里部署网络服务

之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干活的时候突然断网了.一下傻掉了,以前都是连内网,从来不断的.这次连了一个反向隧道,居然断了,傻眼了. 再连回去,发现docker ps里还有进程,好办,docker attach这个进程,就又进去了. 如果没有找到进程,就只要docker commit存一下,然后再docker run拉起来继续 如

Maven插件wagon-maven-plugin自动化部署Java项目到Linux远程服务器

通常情况下,程序开发完成后部署到线上Linux服务器,可能需要经历打包.将包文件传到服务器.SSH连上服务器.敲命令启动程序等一系列繁琐的步骤.实际上这些步骤都可以通过Maven的一个插件wagon-maven-plugin来自动完成. 配置Linux服务器用户名和密码 为了让wagon-maven-plugin插件能SSH连上Linux服务器,首先需要在Maven的配置文件settings.xml中配置好server的用户名和密码. <servers> <server> <