在这里,我们将给大家分享关于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)
- docker 上传镜像到harbor仓库
- Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器
- Docker之IntelliJ IDEA部署SpringBoot应用到Docker
- docker环境安装及springboot+docker在idea上实现一键部署远程服务器
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仓库
先登录到仓库
查看镜像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能实现应用打包隔离,实现快速部署和迁移。如果我们开发应用使用了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开启远程访问
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安装
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/multi‐user.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上实现一键部署远程服务器的相关信息,请在本站查询。
本文标签: