当前位置:   article > 正文

微服务通过docker在Linux上部署(从docker安装到运行)_linux微服务模块打包部署

linux微服务模块打包部署

在Linux中安装Docker

以centos为例,在centos中安装docer:

1.进入该链接或者用安装下面命令

https://docs.docker.com/engine/install/centos/
  • 1

2.用终端软件来链接你的服务器,新建一个文件夹(用户存放项目jar包和docker的文件)

mkdir 文件夹名称
  • 1

3.清空有些旧的信息

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4.输入一下命令安装yum-utils

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  • 1
  • 2
  • 3
  • 4

安装最新版本的docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 1

中间会出现两次询问,输入y即可

p9Ysq5q.png

即为安装成功,若需指定docker版本或已安装跳过这步,直接从检查冲突开始

启动docker

sudo systemctl start docker
  • 1

没有动静即证明docker已经启动成功

配置阿里云的镜像仓库(可选)

登录阿里云,进入控制台,返回旧版控制控制台,找到容器镜像服务

p9Yytsg.png

如图及说明已经配置完成

打包微服务项目

1.检查各个模块之间模块是否有端口冲突(后面以一个微服务项目为例)

检查各个模块的端口,防止后面运行会出现端口占用的情况(不在演示)修改配置文件即可。

2.检查pom文件

1.检查project-parent工程(父工程的)pom文件

拉倒pom文件的下方,看一下是否找到build模块:

p9mNhXn.png

如果找到,删除build模块,否则会打包出现问题(要删除)

没有找到忽略即可

2.检查打包文件

拉倒pom文件上方,找到modules模块:

p9mNxn1.png

检查一下这块各个模块名称和模块是否运行,只打需要运行的模块

2.打包

1.清理工程

首先清理一下,这样会清掉之前的target文件夹

2.编辑打包的指令

p9mUtH0.png

首选按照上面图片打开编辑页面:

将默认的打包命令改为以下的命令:

clean install -DskipTests -f pom.xml
  • 1

如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ztAFAepE-1683382766918)(C:\Users\wang\AppData\Roaming\Typora\typora-user-images\image-20230424110156371.png)]

这时候右上角会出现Maven的运行指令,直接运行即可

等待打包结束:

p9maEPU.png

注意:这时候可以留意一下打包的时间,如果太快,检擦前面的pom文件(1.2当中)否则后面可能会出现jar包过小,找不到主类的问题

2.将打的jar包拷贝到一个文件夹,方面管理命名:

p9mdPQH.png

统一把后缀-0.0.1-SNAPSHOT删除,不删除在后面做Docker的时候保证jar包名称对应即可

3.在Linux部署

1.上传项目的jar包

使用ftp工具或其他软件进入/pro_jar文价夹(之前创建的文件夹),上传项目的jar包:

p9ahlrR.png

1.进入服务器/pro_jar文件夹(之前创建的文件夹)

2.上传上面打的jar包

2.把微服务项目做成Docker镜像

1.拉取jdk的镜像,这里以jdk8为例,可以拉取不同版本jdk镜像(此微服务基于jdk8,所以拉取jdk8的镜像)

docker pull java:8
  • 1

2.在先前创建好的文件夹中新建Dockerfile文件和start.sh文件

touch Dockerfile
touch start.sh
  • 1
  • 2

3.Dockerfile是构建Docker所需要的文件,里面将会存放构建镜像的一些信息

编写Dockerfile内容如下(以上面的微服务项目为例):

FROM java:8	#项目的依赖环境
MAINTAINER docker_maven docker_maven@email.com	#maven的邮箱地址
WORKDIR /docker	#docker的工作区,没有会自动创建
#把项目的jar包,批处理文件加入docker中 ADD 文件名 文件路径和
ADD start.sh /pro_jar/start.sh
ADD feign.jar /pro_jar/feign.jar
ADD Geteway.jar /pro_jar/Geteway.jar
ADD help_about.jar /pro_jar/help_about.jar
ADD project_base.jar /pro_jar/project_base.jar
ADD study_talk.jar /pro_jar/study_talk.jar
ADD user.jar /pro_jar/user.jar
ADD user_auth.jar /pro_jar/user_auth.jar
ADD School_shop.jar /pro_jar/School_shop.ja

CMD ["java", "-version"]
RUN chmod +x /pro_jar/start.sh  #一下为运行命令
ENTRYPOINT ["sh","-c","/pro_jar/start.sh"] 

EXPOSE 63010 #微服务中网关的端口,或者你要往外暴漏的端口
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

注意,这里建议把注释删一下,经过测试不删除概率会有问题

start.sh为Linux中的批处理文件,里面讲放置运行项目的命令,由于微服务项目一般有多个模块需要运行,所以需要写此文件来批量运行各个模块(这里以上面打包的微服务项目为例)

编写start.sh文件:

# 命令后加入 & ,保持程序后台持续运行
nohup java -Dfile.encoding=utf-8  -jar /pro_jar/Geteway.jar &
nohup java -Dfile.encoding=utf-8  -jar /pro_jar/study_talk.jar &
nohup java -Dfile.encoding=utf-8  -jar /pro_jar/help_about.jar &
nohup java -Dfile.encoding=utf-8  -jar /pro_jar/user.jar &
nohup java -Dfile.encoding=utf-8  -jar /pro_jar/user_auth.jar &
nohup java -Dfile.encoding=utf-8  -jar /pro_jar/School_shop.jar &

#指定端口java -jar xxxxxxx-0.0.1-SNAPSHOT.jar --server.port=XXXX
# 死循环,保持docker前台运行
while [[ true ]]; do
    sleep 1
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

将以上的文件保存

2.进入终端操作:

使用ssh链接服务器,进行以下操作:

p9a47nA.png

1.进入项目目录:(/pro_jar/为之前创建的目录)

cd /pro_jar/
  • 1

2.查看docker当前的章台:

docker ps -a
  • 1

3.构建docker镜像:(edu:1.0 为镜像的名称和标签)

docker build -t edu:1.0 .
  • 1

4.运行docker

docker run -d -p 63010:63010 --name edu edu:1.0
  • 1

-d 后台运行

-p 开放的端口

–name 重新命名

5.查看日志:(edu为运行时指定的新docker名)

docker logs -t edu 
  • 1

p9a5Lr9.png

如图就说明已经启动说明已经成功启动,若访问不了,检查一下Dockerfile文件和start.sh文件,可以看一下运行输出。

其他操作:

1.停止正在运行的docker:(edu为当前的docker运行的名称)

docker stop edu
  • 1

2.移除正在运行的docker:(edu与docker名对应(name))

docker rm edu
  • 1

3.删除docker镜像:(edus:1.0为镜像名称加标签)

docker rmi edu:1.0
  • 1

查看docker的镜像:

docker images
  • 1

4.在IDEA中查看docker状态:

由于之前暴露docker默认的2375的端口会非常危险(docker默认不需要密码)所以在做这个操作需要配置CA证书

(不爆露公网的,在内网中环境中可以直接用http链接,无需CA证书)

1.链接docker

p9mDKNq.png

1.在设置-构建中找到docker模块

2.输入doker的远程url:(要用HTTPS,内网直接走http即可)

https://***.***.***.****:2375
  • 1

放入docker的CA证书(走内网无需放入)

3.确定

之后会在servers中出现docker,如图所示,即可进行操作:
p9mDyKe.png
以上若有小问题或其他,可以私信作者~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/388822
推荐阅读
相关标签
  

闽ICP备14008679号