栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

docker集群(2):docker stack实战

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker集群(2):docker stack实战

文章目录

帮助命令dockerstack与docker-composedocker statck 实战

第一节,搭建集群第二节,构建两个springboot子工程第三节 打包发布镜像到阿里云第四节 发布项目第五节、移除服务 问题

1、我的仓库设置的私有的怎么办

帮助命令
docker stack 

dockerstack与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

第二节,构建两个springboot子工程
    子工程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指令部署即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786183.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号