帮助命令dockerstack与docker-composedocker statck 实战
第一节,搭建集群第二节,构建两个springboot子工程第三节 打包发布镜像到阿里云第四节 发布项目第五节、移除服务 问题
1、我的仓库设置的私有的怎么办
帮助命令docker stackdockerstack与docker-compose
docker-compose单机部署
Docker stack部署,集群部署
# 单机 docker-compose up -d wordpress.yaml # 集群 docker stack deploy wordpress.yaml
注:它们都支持扩缩容,只不过docker-compose对外暴露端口时存在端口冲突,如果使用随机端口,也可以支持多实例扩缩容
docker statck 实战 第一节,搭建集群
如何搭建集群,请参考:docker集群(1):docker swarm
这里构建了一个最小集群,只有两个manager,没有workder
- 子工程test1结构和代码
代码:
HelloController.java
package com.it2.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class HelloController {
@GetMapping("/test1")
public String hello(){
log.info("test1!!!");
return "hello test1";
}
}
Dockerfile
FROM openjdk:8 EXPOSE 8080 ADD target/test1-0.0.1-SNAPSHOT.jar /app.jar ENTRYPOINT ["java", "-jar", "app.jar"]
- 子工程test2结构和代码
package com.it2.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class HelloController {
@GetMapping("/test2")
public String hello(){
log.info("test2!!!");
return "hello test2";
}
}
Dockerfile
FROM openjdk:8 EXPOSE 8081 ADD target/*.jar /app.jar ENTRYPOINT ["java", "-jar", "app.jar"]
- 请确保两个子工程都能访问
将两个项目打jar包
将jar和Dockerfile上传到服务器(由于我本地没有安装docker环境,无法制作镜像)
在阿里云创建两个容器仓库(这里仓库类型设置的公开)
如果清楚在阿里云创建镜像仓库,可以查看:docker基础(12):镜像发布到阿里云容器镜像仓库
构建镜像并push到阿里云
构建镜像
#构建项目1镜像 docker build -t test1:1.0 . #构建项目2镜像 docker build -t test2:1.0 .
登录阿里云
docker login --username=lcz0710@163.com registry.cn-guangzhou.aliyuncs.com
标记和push test1
docker tag c03cb4155077 registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test1:1.0 docker push registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test1:1.0
标记和push test1
docker tag 43b5afd9a066 registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test2:1.0 docker push registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test2:1.0
如果成功push到阿里云,可以在后台查看
·1. 编写docker-compose.yml文件
version: "3.9"
services:
service1:
image: "registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test1:1.0"
deploy:
replicas: 2
ports:
- "8080:8080"
service2:
image: "registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test2:1.0"
deploy:
replicas: 4
ports:
- "8081:8081"
2. 发布项目
#发布项目 docker stack deploy myapps --compose-file=docker-compose.yml #查看启动服务器的情况 docker service ls #查看启动的服务组 docker stack ls
- 访问测试
- 移除服务
docker stack rm myapps
- 查看
问题 1、我的仓库设置的私有的怎么办
解决办法:
请先登录阿里云docker仓库(只要部署主机登录即可,其它节点不需要登录),再执行docker stack指令部署即可。



