Docker 微服务部署入门到实践

文章目录

  • 前言
  • 一、docker安装
  • 二、创建微服务项目
  • 三、运行前准备
    • 1. 服务器安装maven
    • 2.上传源码到服务器
    • 3. 编译源码并打包镜像
  • 四、Docker-compose运行微服务
  • 五、Docker swarm运行微服务
  • 总结


前言

本文重点关注docker相关实践,不再详细阐述理论知识

一、docker安装

以centos7系统为例说明,为什么是centos7,原因是centos8官方已经不维护了,yum源已失效,安装组件不方便

#2个yum源选用
#官方yum源,适合国外主机
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#设置yum源,国内源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker
sudo yum -y install docker-ce

systemctl enable docker
systemctl start docker

# 安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.2.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose -v

二、创建微服务项目

项目地址:https://gitee.com/00fly/springcloud-swarm/tree/master/all-in-one
源码点击直达
项目结构如下:
注册中心、movie服务调用user服务。
Docker 微服务部署入门到实践_第1张图片

三、运行前准备

1. 服务器安装maven

yum install maven -y

安装完成后,修改成aliyun仓库,文件地址通过下面命令查看
Docker 微服务部署入门到实践_第2张图片
进入/usr/share/maven/conf/settings.xml 在mirrors节点添加

		<mirror>
			<id>mirrorid>
			<mirrorOf>*mirrorOf>
			<name>mirrorname>
			<url>https://maven.aliyun.com/nexus/content/groups/publicurl>
		mirror>

2.上传源码到服务器

示例服务器目录为:/work/all-in-one
在这里插入图片描述

3. 编译源码并打包镜像

sh rebuild.sh

出现如下输出,说明成功。
Docker 微服务部署入门到实践_第3张图片
输入docker images查看镜像
在这里插入图片描述

四、Docker-compose运行微服务

Docker Compose 只是一个在单个服务器上创建多个容器的工具,仅适合开发、测试
进入 /work/all-in-one/docker/compose,执行

sh restart.sh

输出如下信息,说明启动成功
Docker 微服务部署入门到实践_第4张图片
输入 docker ps 查看服务信息
Docker 微服务部署入门到实践_第5张图片
访问 http://124.221.35.36:8761 或者 http://124.221.35.36:8762
发现服务启动正常
Docker 微服务部署入门到实践_第6张图片
依次访问user服务 http://124.221.35.36:8000/2、movie服务 http://124.221.35.36:8010/user/2
服务接口正常!

五、Docker swarm运行微服务

运行docker swarm前需执行 docker swarm init 切换到swarm模式
Docker Swarm 可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。
进入 /work/all-in-one/docker/stack,依次执行

#网络创建首次执行就行
sh 1st-network.sh

sh 2nd-base.sh 
sh 3rd-web.sh

具体的访问路径不再发出来,可以通过下面命令查看

docker service ls

如果服务器配置比较低,可能无法启动stack服务,可以试着删除 base-eureka.yml、core-web.yml里面的resources节点内容,再运行上面的命令查看服务信息!

总结

归纳一下docker 部署的实践步骤:

  1. pom引入docker-maven-plugin插件,配置镜像参数
  2. 编写Dockerfile文件定义打包步骤
  3. 执行 sh rebuid 打包镜像
  4. 进入docker/compose目录执行 sh restart.sh|stop.sh 重启、停止容器。
  5. 进入docker/stack目录执行1/2/3 创建网络(初始执行1次)、启动基础服务、web服务等。

个人认为重点是:
1. Dockerfile文件文件的编写
2. docker-compose.yml自定义网络的设置,固定服务在自定义网络的ip有诸多好处,想想redis缓存服务器、消息队列服务器。
3. extends service的用处,对比docker-compose-common.yml 和docker-compose.yml
4. 跨主机overlay网络的应用

有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!

-over-

你可能感兴趣的:(Docker,云服务器,docker,docker-compose,docker,swarm)