DockerCompose安装、使用 及 微服务部署实操
创始人
2024-03-18 04:46:51
0

1 什么是DockerCompose

DockerCompose是基于Compose文件帮助我们快速的部署分布式应用。
解决容器需手动一个个创建和运行的问题!
在这里插入图片描述

DockerCompose本质上也是一个文本文件,其通过指令定义集群中的每个容器如何运行。我们可以将其看做是将多个docker run命令写到一个文件,只是语法上稍有差异。
DockerCompose的详细语法参考官网
示例:

version: "3.8"services:mysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 123 volumes:- "/tmp/mysql/data:/var/lib/mysql"- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"web:build: .ports:- "8090:8090"

如上所示,其中包含两个容器:

  1. mysql:基于mysql:5.7镜像构建的容器,并且挂载了两个目录
  2. web:基于docker build临时构建的镜像容器,映射端口为8090

2 安装DockerCompose

2.1 下载并安装

# linux下安装命令
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

注:下载有些慢,需耐心等一等

2.2.修改文件权限

# 修改权限
chmod +x /usr/local/bin/docker-compose

在这里插入图片描述

2.3Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

3 部署微服务集群

步骤如下:

3.1 新建cloud-demo目录,进入该目录创建文件:docker-compose.yml,写入下列内容:

version: "3.2"services:nacos:image: nacos/nacos-serverenvironment:MODE: standaloneports:- "8848:8848"mysql:image: mysql:5.7.25environment:MYSQL_ROOT_PASSWORD: 123volumes:- "$PWD/mysql/data:/var/lib/mysql"- "$PWD/mysql/conf:/etc/mysql/conf.d/"userservice:build: ./user-serviceorderservice:build: ./order-servicegateway:build: ./gatewayports:- "10010:10010"
可以看到,其中包含5个service服务:
nacos:作为注册中心和配置中心image: nacos/nacos-server: 基于nacos/nacos-server镜像构建environment:环境变量MODE: standalone:单点模式启动ports:端口映射,这里暴露了8848端口
mysql:数据库image: mysql:5.7.25:镜像版本是mysql:5.7.25environment:环境变量MYSQL_ROOT_PASSWORD: 123:设置数据库root账户的密码为123volumes:数据卷挂载,这里挂载了mysql的data、conf目录,其中有我提前准备好的数据
userservice、orderservice、gateway:都是基于Dockerfile临时构建的

3.2 修改自己的项目,将数据库、nacos地址等均命名为docker-compose中的服务名

因为微服务将来要部署为docker容器,而容器之间互联不是通过IP地址,而是通过容器名。这里我们将order-service、user-service、gateway服务的mysql、nacos地址都修改为基于容器名的访问。

spring:datasource:url: jdbc:mysql://mysql:3306/cloud_order?useSSL=falseusername: rootpassword: 123driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservicecloud:nacos:server-addr: nacos:8848 # nacos服务地址

3.3 使用maven打包工具,将项目中的每个微服务都打包为app.jar。

因为之前查看到Dockerfile中的jar包名称都是app.jar,因此我们的每个微服务都需要用这个名称。

可以通过修改pom.xml中的打包名称来实现,每个微服务都需要修改:

apporg.springframework.bootspring-boot-maven-plugin

3.4 将打包好的app.jar拷贝到cloud-demo中的每一个对应的子目录中,在子目录中创建文件:Dockerfile并写入下列内容:

FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar

3.5 部署

将cloud-demo上传至服务器任意目录下,进入cloud-demo目录,然后运行下面的命令

docker-compose up -d

在这里插入图片描述
由图可见,执行命令后,nacos\mysql镜像自动下载。

相关内容

热门资讯

进口危化品“白名单”管理制度在... 中新网大连12月26日电 (记者 杨毅)大连海关26日发布消息称,进口危化品“白名单”管理制度近期在...
北京两年办理虚假诉讼监督案21... 12月26日,北京市人民检察院召开虚假诉讼专项监督新闻发布会,介绍检方开展虚假诉讼专项监督行动的工作...
仅存7人!缅怀2025年离世的... 2025年末,上海师范大学中国“慰安妇”问题研究中心发布消息,沉痛送别两位日军“慰安妇”制度受害幸存...
原创 圣... 一觉醒来,长期攻击比亚迪的黑媒体天塌了。 就在圣诞节当天,比亚迪给他们送去了每人200万元的罚单。...
韩国前总统夫人金建希,被起诉 张昀/央视新闻 韩国前总统尹锡悦夫人金建希(资料图) 当地时间12月26日,韩国“金建希特检组”以...
守护公平正义 传递法治温度——... 2025年,长春市法律援助中心在局党组的坚强领导下,紧紧围绕“努力让人民群众在每一个司法案件中感受到...
4年纠纷一朝化解 河南法治报记者 朱广亚 通讯员 郭向东 “太感谢了,困扰我们4年的问题解决了,我们全家有房子住了!”...
日常金融纠纷何解?多地建立第三... 图片来源:界面新闻 界面新闻记者 | 安震 信用卡、理财产品、各类信贷等金融产品与服务的普及,...
京尹资讯:暖冬相聚,情满京尹—... 岁末暖冬,温情相聚。在平安夜与圣诞节的温馨氛围中,北京京尹律师事务所将节日庆典与十二月生日会巧妙融合...
空客因坠机事故被遇难者家属起诉 中国航空新闻网讯:据外媒12月25日报道,两名在2023年12月一起直升机坠毁事故中遇难机组人员的家...