Docker部署微服务问题及解决

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习

🌌上期文章:Docker容器命令案例:Nginx容器修改,Redis容器持久化

📚订阅专栏:Docker

希望文章对你们有所帮助

我在学习微服务架构的时候需要用docker进行部署,为了方便我实际上使用的Docker-Compose,这个的简单使用方式可以看这篇文章:
详解SpringCloud微服务技术栈:DockerCompose部署微服务集群

这里讲解了一下部署微服务集群的过程,但是在实践的过程中总还是会出现很多问题,在这里我讲一下自己遇到的问题,以及解决的方法:

Docker部署微服务问题及解决

下载docker-compose,但是使用出现异常

验证docker-compose成功下载的指令是docker-compose -v,但是并没有出现版本好,在执行部署指令docker-compose up -d的时候也不行,都出现了下面的错误:

/usr/local/bin/docker-compose:行1:html:没有那个文件或目录

/usr/local/bin/docker-compose:行2:未预期的符号附近有语法错误

/usr/local/bin/docker-compose:行2:...

这是因为我在Linux中利用了curl来拉取高速安装版本,而网速可能不稳定,导致里面的东西没下载完全。

这时候需要重新进行安装。

1、首先把之前的/usr/local/bin/文件夹下面的docker-compose文件删除,这个文件需要换。

2、然后下载完整文件到本地,可以去百度网盘下载:

链接:https://pan.baidu.com/s/1uQSNIbJa1QZgYL5n9GybAQ?pwd=qlky

提取码:qlky

3、下载完上传到/usr/local/bin/文件夹下,并且利用命令来对其进行改名:

powershell 复制代码
mv docker-compose-linux-x86_64 docker-compose

4、将可执行权限应用于二进制文件:

powershell 复制代码
chmod +x /usr/local/bin/docker-compose

5、创建软链:

powershell 复制代码
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

jar的打包问题

docker-compose.yml中的服务与服务之间是可以互相访问的,因此我的服务order-service与user-service是没必要暴露端口的,mysql可以暴露端口,方便你在本地进行连接。

需要注意的是,docker-compose.yml中设定了MySQL密码为123,因此在idea中进行打包的时候,必须确保application.yml中的mysql都是123,不然打包了也没办法成功。

成功打包,但是仍旧没办法执行

无论这其中发生了什么问题,需要重新打包了,那把打包后的jar包重新上传,还是没办法执行的,这是因为容器已经在执行了,你需要先把容器停下来:

powershell 复制代码
docker-compose stop

停止了容器以后,需要进行删除,要删除gateway、order-service以及user-service的容器,利用下面语句:

powershell 复制代码
docker-compose rm `容器名`

接下来还有一个很关键的地方,那就是镜像也得删除

如果不删除,下一次容器的创建还是用这个镜像来创建的,所以镜像也需要删除,需要删除的镜像依旧是gateway、order-service以及user-service,可以先通过下面语句查询所有的镜像:

powershell 复制代码
docker images

查询到镜像以后,除了镜像的名称,还有镜像的id,需要通过镜像的id进行镜像删除操作:

powershell 复制代码
docker-compose rmi `镜像id`

这样就删干净了,nacos是没必要动的,只是这个服务还是要注意一下的,镜像要删了才行,我没注意到这个问题,导致自己做了好多无用功。

相关推荐
深思慎考6 分钟前
计算机操作系统——进程控制(Linux)
linux·服务器·c++·c
蜗牛丨22 分钟前
Go Vue3 CMS管理后台(前后端分离模式)
mysql·docker·go·vue3·axios·gin·jwt·分页·跨域·ant design vue·log·gorm·otp动态码登录·validator·模型绑定·权限判断
阿熊不会编程31 分钟前
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
linux·开发语言·网络·c++·设计模式
北冥有鱼被烹37 分钟前
微知-如何通过lspci指定某个deviceid查看pcie设备?(lspci -d 15b3:和lspci -d :1021 )
linux·pcie
菜鸟小灰灰38 分钟前
搭建私有docker仓库
运维·docker·容器
一只小菜鸡39 分钟前
python+django5.1+docker实现CICD自动化部署springboot 项目前后端分离vue-element
python·docker·自动化
炽天使43 分钟前
aws rds-mysql不支持性能详情监控
linux·数据库·mysql·云计算·aws·rds
csdn_金手指1 小时前
docker 通过Dockerfile自定义的镜像部署Springboot项目
spring boot·docker·容器
追风赶月、1 小时前
【Linux】线程同步与互斥
linux
Karoku0662 小时前
【docker集群应用】Docker网络与资源控制
运维·数据库·docker·容器