首页 > 系统相关 >ubuntu docker镜像制作swram集群部署java项目

ubuntu docker镜像制作swram集群部署java项目

时间:2024-12-06 18:59:14浏览次数:6  
标签:java coding swram mall api https ubuntu 镜像 docker

1,window安装docker工具,安装git工具

docker下载地址:docker.com

安装完成后启动docker,设置镜像源

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": true,
  "features": {
    "buildkit": true
  },
  "log-driver": "json-file",
  "log-opts": {
    "max-file": "3",
    "max-size": "400m"
  },
  "registry-mirrors": [
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://ccr.ccs.tencentyun.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

git下载地址:Git for Windows

2,dockerfile镜像制作

准备一个腾讯DevOps_DevOps 解决方案_一站式 DevOps_开发者工具 | 腾讯云 CODING DevOps

注册后新建一个docker制品仓库(待会我们把制作的dockerfile镜像放到私有云这里)

idea项目跟目录下编写dev-.sh脚本

dev-buildAndPublishAmd64.sh内容如下:(这里需要安装maven)

#!/bin/bash

cd $(dirname $0)
#
#if [ $# -ne 1 ]; then
#    echo "usage: buildAndPublish.sh version"
#    exit 1
#fi
#
## 版本号
#version=$1
#echo "Build Version: $version"

mvn clean
mvn install

# docker build
#buildDist="chuxin-sdk:$version"

buildDist="mall-dev:dev20241204154801"
docker buildx build --platform=linux/amd64 -t  ${buildDist} -f DockerfileDev .

docker tag ${buildDist} https://zvsz808-docker.pkg.coding.net/geewer/mall/${buildDist}
docker push https://zvsz808-docker.pkg.coding.net/geewer/mall/${buildDist}

编写DockerfileDev文件

FROM amazoncorretto:8

# Add your JAR files
ADD ./mall-api/target/mall-api-1.0-SNAPSHOT.jar mall-api-1.0-SNAPSHOT.jar



# 设置UTF-8编码环境变量
ENV LANG C.UTF-8
ENV LANGUAGE C
ENV LC_ALL C.UTF-8

WORKDIR /home

# Copy scripts and create directoriesRUN mkdir /home/data \
    && mkdir -p /data/log

# Set the locale to C.UTF-8 at the end of your Dockerfile if needed
ENV LANG C.UTF-8

上面2个shell的意思:maven编译打包后将mall-api.jar加入镜像中,安装亚马逊jdk8(个人喜欢amazoncorretto:8,openjdk8镜像会出现幺蛾子项目上的jdk问题),最后pull到​​​​​​https://zvsz808-docker.pkg.coding.net/geewer/mall目录下面

使用git bash执行

3.linux下拉取镜像

docker登陆,修改自己的账号密码

docker login -u test@qq.com -p 123456 /zvsz808-docker.pkg.coding.net

镜像拉取(主节点服务和从节点服务都要拉取镜像)

docker pull zvsz808-docker.pkg.coding.net/geewer/mall:dev20241204154801

也可以查看coding操作指引

4,启动项目

安装部署docker swarm查看作者:ubuntu docker swarm部署一个集群-CSDN博客

 查看服务节点

docker node ls

假设节点为node01,node02,设置节点添加标签

 docker node update --label-add mall-api=true node01 
 docker node update --label-add mall-api=true node02

查看节点标签策略

docker node inspect node01 --pretty

编写一个docker-compose.yml文件

 replicas: 2 #运行2个节点
      placement:
        constraints:
          - node.labels.mall-api == true #标签

上面代码运行2个副本,每个节点一个副本mall-api

version: '3.2'


services:

  mall-api:
    image: zvsz808-docker.pkg.coding.net/geewer/mall/mall-api:dev20241204154801
    #container_name: mall-api
    networks:
      - xbiz
      - xdb
    ports:
      - 8080:8080
    volumes:
      - type: bind
        source: "/data/app/api/logs"
        target: "/data/mall"
    command: sh -c "java -Xmx2048m -Xms2048m -Duser.timezone=GMT+08 -Dfile.encoding=UTF-8  -Dspring.profiles.active=docker -jar /mall-api-1.0-SNAPSHOT.jar"
    deploy:
      mode: replicated
      replicas: 2 #运行2个节点
      placement:
        constraints:
          - node.labels.mall-api == true #标签
networks:
  xbiz:
    external:
      name: "swarm_xbiz"
  xdb:
    external:
      name: "swarm_xdb"

创建环境网络

docker network create -d overlay swarm_xdb
docker network create -d overlay swarm_xbiz

查看当前的网络
 

docker network ls

启动mall-api.jar项目

docker stack deploy -c <(docker-compose -f docker-compose.yml config)  mall-api

查看所有服务

docker service ls


查看日志

docker service ls

docker service ps --no-trunc v7c8oxsy3j9r

标签:java,coding,swram,mall,api,https,ubuntu,镜像,docker
From: https://blog.csdn.net/qq_30333355/article/details/144239377

相关文章

  • Ubuntu多个人同时远程控制
    要实现Ubuntu多个人同时远程控制,有以下几种主要方法:1.VNC(VirtualNetworkComputing)-安装服务端:`sudoapt-getinstallvino`-配置桌面共享-远程用户可以通过VNC客户端连接-优点:图形界面,操作直观-缺点:性能相对较低2.SSH多用户同时登录-默认支持多用户同时通过SSH远程......
  • Java 注解实现字段加密和解密
    前言一般对防止数据泄露有两种方式,第一种是在数据库层面去做加密,还有一种就是在应用层去加密。数据库层面做数据加密的是最安全的,实现需要对驱动做操作,略显复杂,如果对保密程度不是非常高,可以在应用层面去实现数据加解密。下面将基于应用层面结合aop去实现数据加解密功能。1.引入......
  • Y20030029 Java+微信+SPRINGBOOT+MYSQL+LW+传统文化展示微信小程序的设计与开发 配置
    传统文化展示微信小程序1.项目摘要2.课题开发的背景和意义3.项目功能4.界面展示5.源码获取1.项目摘要基于微信小程序的传统文化展示小程序是一个集合了多种传统文化元素与现代化技术的创新平台。它充分利用了微信小程序的便捷性和普及性,为广大用户提供了一个深入......
  • Java注解和反射详解
    文章目录注解@Override的定义@Deprecated的定义:@SuppressWarnings的定义:元注解:反射(重要!!!)反射Class类类加载内存分析什么时候会发生类初始化?获得类运行时结构:动态创建对象反射操作泛型注解操作注解@Override的定义@Target(ElementType.METHOD)//只能放在方法上@Ret......
  • JavaScript查找数组中某个元素的位置
    indexOf:在JavaScript中,你可以使用indexOf()方法来查找数组中元素的位置。如果元素不存在于数组中,indexOf()会返回-1。letindex=array.indexOf('x')if(index!=-1){//...}findIndex:如果你需要查找的是复杂对象数组,你可能需要自定义一个查找函数,使用findIndex()letobj......
  • Java 2025年面试总结(持续更新)
    1.自我介绍简单一点吧,把自己的情况说清楚,一两分钟即可。2.微服务的组件答:微服务是把一个类似单体项目根据某种维度进行拆分,比如根据功能模块进行拆分。拆分之后,具备了更好的抗压性/扩展性,还可以更好的解耦,但是维护相比之前会更麻烦了常用的组件有SpringCloud。其中里面......
  • Java MyBatis返回两个字段作为Map的key和value
    使用MyBatis时,可能会遇到这种情况:只查询两个字段,需要返回一个Map,其中第一个字段作为key,第二个字段作为value。这种查询在某些场景非常好用,比如查询字典,查询出的key和value就是字典的value和label,利用HashMap的get方法时间复杂度为O(1)的特点,可以实现字典的快......
  • JAVA8的computeIfAbsent使用方法
    基础说明computeIfAbsent是Java8引入的Map接口中的一个默认方法。它允许你以原子操作的方式在给定键不存在时计算其值,并将其添加到映射中。如果该键已经存在,则返回已存在的值而不执行任何计算。下面是computeIfAbsent的基本用法:Map<K,V>map=newConcurrentHashMap<......
  • 无插件H5播放器EasyPlayer.js网页直播/点播播放器应该怎么使用JavaScript初始化?
    JavaScript可以用来控制播放器的基本功能,如播放、暂停、停止、快进、快退等。通过监听播放器的事件,JavaScript可以响应用户的操作,实现交互式控制。使用JavaScript,开发者可以创建自定义的播放器界面,而不是使用浏览器默认的控件。这可以通过操作DOM来实现,比如显示播放进度条、音量控......
  • 斗地主之顺子(Java & Python& JS & C++ & C )
    题目描述在斗地主扑克牌游戏中,扑克牌由小到大的顺序为:3,4,5,6,7,8,9,10,J,Q,K,A,2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。其中顺子的出牌规则为:由至少5张由小到大连续递增的扑克牌组成,且不能包含2。例如:{3,4,5,6,7}、{3,4,5,6,7,8,9,10,J,Q,K,A}都是......