二、对比Docker命令:该文件是一个文本文件,通过指令定义集群中的每个容器如何运行。
- Compose文件:
services: mysql: image:mysql: 5.17 environment: 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
- Docker命令:
#mysql容器,为换行 docker run -e MYSQL_ROOT_PASSWORD=123 -p 3306:3306 -v -/tmp/mysql/data:/var/lib/mysql -v -/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -d mysql:5.17 #构建镜像 docker build -t web:1.0 #运行容器 docker run --name web -p 8090:8090 -d web:1.0
- 其实compose文件就是将docker run的各种参数转换成指令。
- 假设有以下服务:
cloud-demo文件夹下:
nacos: dockerfile
mysql: /conf和/data
userservice: dockerfile
orderservice: dockerfile
gateway:dockerfile
- 编写compose文件:
version:"3.2" services: nacos: iamge: nacos/nacos-server environment: MODE: standalone ports: - "8848:8848" mysql: #同上,$PWD为当前路径 volumes: -"$PWD/mysql/data:/var/lib/mysql" -"$PWD/mysql/conf:/etc/mysql/conf.d/" userservice: build: ./user-service orderservice: build: ./order-service gateway: build:./gateway ports: -"10010:10010"
- 修改项目里的地址。
比如mysql的地址:localhost:3306更换为mysql:3306。
又比如nacos的地址:localhost:8848更换为nacos:3306。
- maven打包各个微服务成app.jar包,放到对应目录中。最后将cloud-demo上传至虚拟机,执行docker-compose up -d部署。一般来说,会将注册中心nacos优先启动。



