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是没必要动的,只是这个服务还是要注意一下的,镜像要删了才行,我没注意到这个问题,导致自己做了好多无用功。

相关推荐
haiyanglideshi3 分钟前
sendto丢包
linux
魔理沙偷走了BUG13 分钟前
【Linux笔记】Day5
linux·笔记
利刃大大14 分钟前
【Linux系统编程】二、Linux进程概念
linux·c语言·进程·系统编程
阿政一号17 分钟前
Linux初识:【冯诺依曼体系结构】【操作系统概念】【进程部分概念(进程状态)(进程优先级)(进程调度队列)】
linux·服务器·指令·进程概念·linux操作系统
小林想被监督学习1 小时前
RabbitMQ 仲裁队列 -- 解决 RabbitMQ 集群数据不同步的问题
linux·分布式·rabbitmq
xf8079892 小时前
cursor远程调试Ubuntu以及打开Ubuntu里面的项目
linux·运维·ubuntu
dot to one2 小时前
Linux 入门 常用指令 详细版
linux·服务器·centos
Golinie3 小时前
记一次Linux共享内存段排除Bug:key值为0x0000000的共享内存段删除不了
linux·bug·共享内存段
狄加山6753 小时前
Linux 基础1
linux·运维·服务器
Once_day3 小时前
Linux-arm(1)ATF启动流程
linux·arm开发