GVKun编程网logo

win10 idea springboot上传镜像到远程docker服务器(idea远程部署spring boot)

17

在这里,我们将给大家分享关于win10ideaspringboot上传镜像到远程docker服务器的知识,让您更了解idea远程部署springboot的本质,同时也会涉及到如何更有效地docker上

在这里,我们将给大家分享关于win10 idea springboot上传镜像到远程docker服务器的知识,让您更了解idea远程部署spring boot的本质,同时也会涉及到如何更有效地docker 上传镜像到harbor仓库、Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器、Docker之IntelliJ IDEA部署SpringBoot应用到Docker、docker环境安装及springboot+docker在idea上实现一键部署远程服务器的内容。

本文目录一览:

win10 idea springboot上传镜像到远程docker服务器(idea远程部署spring boot)

win10 idea springboot上传镜像到远程docker服务器(idea远程部署spring boot)

1. 开启2375端口,供外部访问docker

vim /usr/lib/systemd/system/docker.service
修改ExecStart为下面一行内容
#ExecStart=/usr/bin/dockerd -H unix://
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
systemctl daemon-reload // 1,加载docker守护线程
systemctl restart docker // 2,重启docker

测试端口是否成功 curl 127.0.0.1:2375/info

在win10客户端添加环境变量

添加dos下mvn命令的执行

直接在Path属性后面添加一条当前Maven的文件地址加上\bin

2. 使用docker-maven-plugin插件上传镜像到docker服务器

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${project.name}:${project.version}</imageName>
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                    <dockerHost>http://192.168.1.10:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

3. 在src/main下面新建文件夹docker

添加文件Dockerfile

FROM daocloud.io/library/java:8u40-b22  #这里是巨坑,下载慢的话一定要关闭从新下载
VOLUME /tmp
ADD gexin-docker-demo-1.0-SNAPSHOT.jar app.jar
RUN sh -c ''touch /app.jar''
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

执行命令  mvn clean package docker:build

执行成功出现如下截图内容

报错如下:

1. No plugin found for prefix ''docker'' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (F:\repo), nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public)] -> [Help 1]

  解决办法:在maven的conf/setting.xml中要加入

<pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
    <pluginGroup>com.spotify</pluginGroup>
  </pluginGroups>

<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>

再次执行mvn clean package docker:build

 4. 登录虚拟机可以看到

[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gexin-docker-demo 1.0-SNAPSHOT ac7ed71487ca 16 seconds ago 904MB
daocloud.io/library/java 8u40-b22 0a5e1e22983a 4 years ago 815MB
[root@localhost ~]# docker run -d -p 8091:8091 gexin-docker-demo:1.0-SNAPSHOT
bd87d64f71668c9e97eb99de6b8d50ae0a9ca2e80ad0da8081bc50cd000b345c
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd87d64f7166 gexin-docker-demo:1.0-SNAPSHOT "sh -c ''java $JAVA_O…" 7 seconds ago Up 5 seconds 0.0.0.0:8091->8091/tcp confident_curran

在浏览器查看结果 http://192.168.1.10:8091/

总结:

1. 选择使用docker和dockerfile执行很重要

2. FROM 选择jdk很重要,可能造成下载过慢或者找不到包

docker 上传镜像到harbor仓库

docker 上传镜像到harbor仓库

先登录到仓库

 

查看镜像ID 、tag

 

 

 

打tag 然后上传

 

 

 

命令解析

docker tag centos:7 192.168.31.128/test/centos7

 

docker命令

tag 打tag

centos:7 镜像名字和Tag版本

192.168.31.128 harbor仓库位置

test 仓库的项目名字

centos7 为存储在仓库中的名字

 

docker push 192.168.31.128/test/centos7

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器

我们知道,docker能实现应用打包隔离,实现快速部署和迁移。如果我们开发应用使用了spring cloud + spring boot架构,那么,通过docker-maven-plugin实现快速构建镜像并发布到远程docker服务器会非常方便。相关步骤参考如下:

step1、开启docker服务器的tcp管理端口,这里以2375为例进行说明。具体的配置过程请参考另一篇博客:
https://www.cnblogs.com/funnyboy0128/p/9983779.html

step2、在本地配置环境变量:DOCKER_HOST,如下: 

 

step3、在应用中src/main下新建docker文件夹,并编写Dockerfile和runboot.sh文件

Dockerfile主要用来构建镜像,参考示例如下:

 1 FROM java:8
 2 MAINTAINER funnyboy
 3 VOLUME /tmp
 4 RUN mkdir /app
 5 ADD docker-app-0.0.1-SNAPSHOT.jar /app/app.jar
 6 ADD runboot.sh /app/
 7 RUN bash -c ''touch /app/app.jar''
 8 WORKDIR /app
 9 RUN chmod a+x runboot.sh
10 EXPOSE 5678
11 
12 CMD /app/runboot.sh

 

runboot.sh为应用启动脚本,参考如下:

1 java -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar

 

step4、在pom中添加docker-maven-plugin插件配置,关键代码如下:

 1 <build> 
 2     <plugins>
 3            <plugin>
 4                <groupId>org.springframework.boot</groupId>
 5                <artifactId>spring-boot-maven-plugin</artifactId>
 6            </plugin>
 7            <plugin>
 8                <groupId>com.spotify</groupId>
 9                <artifactId>docker-maven-plugin</artifactId>
10                <version>0.4.3</version>
11                <configuration>
12                    <!-- 镜像名称 -->
13                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
14                    <!-- 指定Dockerfile 文件的位置 -->
15                    <dockerDirectory>src/main/docker</dockerDirectory>
16                    <!-- 指定哪些文件需要和 Dockerfile放在一起,一般jar包需要  -->
17                    <resources>
18                        <resource>
19                            <targetPath>/</targetPath>
20                            <directory>${project.build.directory}</directory>
21                            <include>${project.build.finalName}.jar</include>
22                        </resource>
23                    </resources>
24                </configuration>
25            </plugin>
26        </plugins>
27 </build>
28 <properties>
29 <docker.image.prefix>funnyboy</docker.image.prefix>
30 <project.artifactId>docker-app</project.artifactId>
31 <project.build.finalName>app</project.build.finalName>
32 </properties>

 

step5、本地执行构建:mvn clean package docker:build

 

step6、远程登陆服务器,查看docker镜像:docker images

 

经过上述步骤,就已经成功实现了构建spring cloud+spring boot应用,并将镜像发布到远程docker服务器。

 

Docker之IntelliJ IDEA部署SpringBoot应用到Docker

Docker之IntelliJ IDEA部署SpringBoot应用到Docker

Docker开启远程访问

vim /usr/lib/systemd/system/docker.service
在 ExecStart=/usr/bin/dockerd-current 后 增加 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
最终为 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

systemctl daemon-reload
systemctl restart docker

查看端口是否开启
netstat -nlpt

测试2375是否通
curl http://127.0.0.1:2375/info

打开2375防火墙
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --reload

IntelliJ IDEA安装Docker插件
搜索docker安装并重启

重启后继续打开File->settings->Build...->Docker->点击+号->选中TCP socket->输入你服务器的ip和docker远程连接的端口号2375,name可以随便取名,比如docker-connect-test
输入后会自动建立连接,如果这时候你看到显示连接成功后->apply->ok.
如果显示连接失败,请关闭windows防火墙,并确认服务器端防火墙的2375端口是否已开放且处于监听状态(netstat -tnl 去找一下是否有2375且显示Listen状态)
成功后可以在IDEA左下角找到Docker,或者通过依次打开view -> toolwindows -> Docker打开
点击左上角的运行按钮,即可连接到服务器的docker

Spring Boot服务docker部署

新建一个Spring Boot工程,设置端口为8080,在工程里写一个REST接口,如下,简单返回一个字符串

@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public String hello() {
  return "hello world";
}
}

 

在项目应用根目录下增加一个Dockerfile文件,内容如下

FROM java:8
VOLUME /tmp
ADD target/SpringBoottest-1.0.0.jar SpringBoottest-1.0.0.jar
RUN bash -c 'touch /SpringBoottest-1.0.0.jar'
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/SpringBoottest-1.0.0.jar"]

 

修改pom文件,添加properties,添加plugin

<properties>
<!-- 镜像前缀 -->
<docker.image.prefix>zns</docker.image.prefix>
</properties>

 

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!--<dockerHost>http://docker服务器ip:2375</dockerHost> --> 
<dockerDirectory></dockerDirectory> 
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

 

点击run->edit configuration,增加一个Docker配置,选择dockerfile类型,在弹出的界面填写信息
name可以随便取名
Server选择刚刚创建的docker-connect-test
Dockerfile选择dockerfile文件的位置
Image tag填写镜像名称 比如zns/springboottest:1.0.0
Container name填写容器名称 比如zns-springboottest
Bind ports填写服务器主机端口和docker容器端口映射 比如 18080:8080,注意这里的8080需跟EXPOSE 8080设置的端口一致
点击确定

然后启动SpringBoot应用和刚刚配置的docker应用


服务器打开18080防火墙
firewall-cmd --zone=public --add-port=18080/tcp --permanent
firewall-cmd --reload

访问服务器ip加上18080端口测试

docker环境安装及springboot+docker在idea上实现一键部署远程服务器

docker环境安装及springboot+docker在idea上实现一键部署远程服务器

以下均是在虚拟机上操作的环境

一、docker安装

1、检查内核版本,必须是3.10及以上(docker要求centos系统的内核版本高于3.10

uname r

#如果系统版本较低,则使用yum update更新内核

2、安装docker

yum install docker

3、输入y确认安装

4、启动docker

[root@localhost ~]# systemctl start docker

[root@localhost ~]# docker v

Docker version 1.12.6, build 3e8e77d/1.12.6

5、开机启动docker

[root@localhost ~]# systemctl enable docker

Created symlink from /etc/systemd/system/multiuser.target.wants/docker.service to

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

6、停止docker

systemctl stop docker

 

二、Docker 配置

1、修改镜像文件拉取地址为ustc

vi /etc/docker/daemon.json

{

"storage-driver":"devicemapper",

 "registry-mirrors": ["http://hub-mirror.c.163.com"],

 "registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"]

}

2、编辑/lib/systemd/system/docker.service文件

Vim /lib/systemd/system/docker.service文件

原文件部分内容:

ExecStart=/usr/bin/dockerd-current \

          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \

          --default-runtime=docker-runc \

          --exec-opt native.cgroupdriver=systemd \

          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \

          --init-path=/usr/libexec/docker/docker-init-current \

          --seccomp-profile=/etc/docker/seccomp.json \

          $OPTIONS \

          $DOCKER_STORAGE_OPTIONS \

          $DOCKER_NETWORK_OPTIONS \

          $ADD_REGISTRY \

          $BLOCK_REGISTRY \

          $INSECURE_REGISTRY \

  $REGISTRIES

这上述部分全部删掉:

并重新写成如下部分内容:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654

其他参数不变,重启docker

systemctl daemon-reload

systemctl restart docker.service

完成后,查看是否启动正常,并且可以看到版本信息

[root@docker system]# docker version

 

三、springboot+docker实现一键部署

1、idea中安装dockerfile插件

打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。安装后重启Idea。

当提示successful时表示成功

2、在springboot项目中的pom中添加打包docker的插件

<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>${docker.image.prefix}/${project.artifactId}</imageName>
        <!--指定标签-->
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>
        <!-- 指定 Dockerfile 路径 ${project.basedir}:项目根路径下-->
        <dockerDirectory>${project.basedir}</dockerDirectory>
        <!--<dockerDirectory>src/main</dockerDirectory>-->
        <imageName>${project.artifactId}</imageName>
        <!--指定远程 docker api地址-->
        <dockerHost>http://172.20.10.7: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>
        <!-- 以下两行是为了docker push到DockerHub使用的。 -->
        <serverId>docker-hub</serverId>
        <registryUrl>https://index.docker.io/v1</registryUrl>
    </configuration>
</plugin>

3、配置Dockerfile文件

#指定基础镜像,在其上进行定制
FROM java:8

#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层
VOLUME /tmp

#复制上下文目录下的target/demo-1.0.0.jar 到容器里
COPY demo-0.0.1.jar demo-1.0.0.jar

#bash方式执行,使demo-1.0.0.jar可访问
#RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
RUN bash -c "touch /demo-1.0.0.jar"

#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080

#指定容器启动程序及参数   <ENTRYPOINT> "<CMD>"
ENTRYPOINT ["java","-jar","demo-1.0.0.jar"]

4、创建docker镜像

idea中执行package进行打包

 

 

切换到docker控制台,即可看到对应的demo镜像

 

 

选中镜像,点击右键,创建镜像容器

 

 

配置好镜像id和端口映射,点击run操作即可一键部署到linux服务器,且自动启动

 

 

然后在浏览器上就可以直接访问应用了

我们今天的关于win10 idea springboot上传镜像到远程docker服务器idea远程部署spring boot的分享已经告一段落,感谢您的关注,如果您想了解更多关于docker 上传镜像到harbor仓库、Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器、Docker之IntelliJ IDEA部署SpringBoot应用到Docker、docker环境安装及springboot+docker在idea上实现一键部署远程服务器的相关信息,请在本站查询。

本文标签: