微服务通过docker在Linux上部署(从docker安装到运行)

在Linux中安装Docker

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

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

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

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

mkdir 文件夹名称

3.清空有些旧的信息

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

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

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

安装最新版本的docker

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

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

p9Ysq5q.png

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

启动docker

sudo systemctl start docker

没有动静即证明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

如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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

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

touch Dockerfile
touch start.sh

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 #微服务中网关的端口,或者你要往外暴漏的端口

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

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

将以上的文件保存

2.进入终端操作:

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

p9a47nA.png

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

cd /pro_jar/

2.查看docker当前的章台:

docker ps -a

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

docker build -t edu:1.0 .

4.运行docker

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

-d 后台运行

-p 开放的端口

–name 重新命名

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

docker logs -t edu 

p9a5Lr9.png

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

其他操作:

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

docker stop edu

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

docker rm edu

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

docker rmi edu:1.0

查看docker的镜像:

docker images

4.在IDEA中查看docker状态:

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

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

1.链接docker

p9mDKNq.png

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

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

https://***.***.***.****:2375

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

3.确定

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

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值