idea+docker+springcloud+Dockerfile自动部署项目

研究了一上午中午部署成功了。这条帖子理解不全面,会留有很多疑问,知道的小伙伴可以帮忙回答,我也会持续更新补充的。

环境:腾讯云的centos7  本地项目:springcloud项目(3个),今天就拿注册中心来做展示。

一、项目结构

idea+docker+springcloud+Dockerfile自动部署项目_第1张图片

二、centos上面安装docker

首先现在idea中讲docker的插件安装好,顺便重启一下idea

idea+docker+springcloud+Dockerfile自动部署项目_第2张图片

接着配置docker连接服务器进行测试

idea+docker+springcloud+Dockerfile自动部署项目_第3张图片

成功的话会出现下面的--Connection Successful

如果在ip正确的情况下出现连接失败,请修改服务器配置

vi /etc/sysctl.conf 添加如下代码: net.ipv4.ip_forward=1
systemctl restart network 重启network服务 查看是否修改成功
sysctl net.ipv4.ip_forward 如果返回为“net.ipv4.ip_forward = 1”则表示成功了

idea+docker+springcloud+Dockerfile自动部署项目_第4张图片

至此第二步就完成了--如有其它请自行百度

三、配置Dockerfile文件进行连接

1、先进行打包,查看jar包名称

idea+docker+springcloud+Dockerfile自动部署项目_第5张图片

2、在项目根目录添加一个文件Dockerfile,除了其中圈起来的jar名称需要换,其它就可以使用默认,上面有注释,如果再不懂去百度,因为我也不太多懂

idea+docker+springcloud+Dockerfile自动部署项目_第6张图片

代码贴出来

# Docker image for demo file run
# VERSION 0.0.1
# Author: smallgourd
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER lianxin<[email protected]>
#系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD target/eureka-server-0.0.1-SNAPSHOT.jar app.jar
#启动容器时的进程
ENTRYPOINT ["java","-jar","/app.jar"]
#暴露8080端口
EXPOSE 9080

3、接下来配置启动项

idea+docker+springcloud+Dockerfile自动部署项目_第7张图片

idea+docker+springcloud+Dockerfile自动部署项目_第8张图片

idea+docker+springcloud+Dockerfile自动部署项目_第9张图片

idea+docker+springcloud+Dockerfile自动部署项目_第10张图片

在弹出来的框中输入:第一个选择项目根目录文件夹,一定要是你配置的项目的根目录,下面的填上脚本

clean package -U -DskipTests

idea+docker+springcloud+Dockerfile自动部署项目_第11张图片

有些人在下面工具栏有个单独的Docker选项,我的是在Services里面,都一样的,接下来点击刚才配置好的选项进行运行

idea+docker+springcloud+Dockerfile自动部署项目_第12张图片

idea+docker+springcloud+Dockerfile自动部署项目_第13张图片

正在构建中  看服务器了  有的会比较慢  我的就最基础的配置,所以大概一两分钟不等

成功的截图:

idea+docker+springcloud+Dockerfile自动部署项目_第14张图片

idea+docker+springcloud+Dockerfile自动部署项目_第15张图片

成功之前出现了一些小插曲,需要配置服务器

出错的话一定要查看最后一行的报错信息,拉倒最后会有提示

这是我在配置中出现的三个问题。解决了就好了

第一个:
exec: "docker-proxy": executable file not found in $PATH'

在环境变量中找不到这个docker-proxy

解决办法:

打开docker服务的配置文件/usr/lib/systemd/system/docker.service, 其中有一行配置如下:
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current
docker-proxy没有在path环境变量里面,因此需要通过软连接的方式挂出来

执行下面的:
ln -s /usr/libexec/docker/docker-proxy-current、
第二个:
上面的问题解决后又出现了下面问题:
Bind for 0.0.0.0:9080 failed: port is already allocated
通过命令:netstat -an | grep 9080 发现根本没有在使用该端口的文件
删除该文件夹/var/lib/docker/network/files/下的local-kv.db文件
cd /var/lib/docker/network/files/
rm -rf local-kv.db
第三个:
随后出现的问题就是
/usr/bin/docker-current: Error response from daemon: shim error: docker-runc not installed on system.
跟上面的类似
cd /usr/libexec/docker/
ln -s docker-runc-current docker-runc

该问题解决后,idea就能出现之前的成功界面。
如果还有问题,请先重启docker服务systemctl restart docker.service
不行的话再根据具体报错进行修改。

最后的成功截图,在每次构建的时候会产生none镜像,以及docker运行会出现中文日志乱码,后续会继续修改

idea+docker+springcloud+Dockerfile自动部署项目_第16张图片

idea+docker+springcloud+Dockerfile自动部署项目_第17张图片

ps 中文乱码已解决
参考:https://blog.csdn.net/MOESECSDN/article/details/103061615
首先去服务器中查看docker的日志是否正常,日志显示中文正常
所以基本上就可以确定是idea的问题了,而且idea本地运行项目不会乱码,只有docker log才会乱码,网上太多教程,反正都试了,没有生效的  发现只有上面连接中的方法可以
复制下面这段:添加到下面图中的位置并重启idea
-Dfile.encoding=utf-8

idea+docker+springcloud+Dockerfile自动部署项目_第18张图片

 

 

qq:410149148 有问题可以进行沟通,小白一枚,我会尽力解决,不会的也会帮你百度。

你可能感兴趣的:(idea+docker+springcloud+Dockerfile自动部署项目)