微服务项目多种部署方式

【k8s】的方式部署:

        打包镜像并推送至自己的远程镜像厂库(阿里云、harbor)等等都可以,然后安装 k8s 从镜像仓库拉去镜像并运行部署

打包镜像并推送至远程仓库:

        配置pom.xml:



        
		nacos
		nacos
        3.8.2
        3.3.5
        2023.0.3
        2023.0.1.3
        UTF-8
        17
        17
        3.3.5
        1.3.3
        0.0.3
        2.2.4
        1.12.675
        2.4
        3.1
        1.10
        3.0.5
        4.0.5
        3.0.5
        3.0.0
        2.4.0

		1.0.0
        0.45.1
        http://127.0.0.1:2375
        
        mentalimages
        admin
        123
        9.0.1
        0.0.43
        1.6.0
        3.13.0
    

        ${project.name}
        
            
                src/main/resources
                true
            
        
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                    ${spring-boot.version}
                    
                        ${project.build.finalName}
                        
                            true
                        
                    
                    
                        
                            
                                repackage
                            
                        
                    
                
				
                
                    io.fabric8
                    docker-maven-plugin
                    ${docker.plugin.version}
					
						
							build-image
							package
							
								build
								push
							
						
					
                    
                        
                        ${docker.host}
                        
                        ${docker.registry}
                        
                        
							${docker.username}
							${docker.password}
                        
                        
                            
                                
                                ${docker.registry}/${docker.namespace}/${project.name}:${images.version}
                                
									${project.basedir}/Dockerfile
                                
                            
                        
                    
                
            
        
        
            
            
                org.codehaus.mojo
                flatten-maven-plugin
                ${flatten-maven-plugin.version}
                
                    resolveCiFriendliesOnly
                    true
                
                
                    
                        flatten
                        process-resources
                        
                            flatten
                        
                    
                    
                        flatten.clean
                        clean
                        
                            clean
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                ${maven-compiler-plugin.version}
                
                    ${maven.compiler.target}
                    ${maven.compiler.source}
                    UTF-8
                    true
                
            
            
            
                io.github.git-commit-id
                git-commit-id-maven-plugin
                ${git.commit.plugin}
                
                    
                        get-the-git-infos
                        initialize
                    
                
                
                    false
                    true
                    
                    yyyy-MM-dd HH:mm:ss
                    
                        ^git.build.(time|version)$
                        ^git.commit.(id|message|time).*$
                    
                
            
            
            
                io.spring.javaformat
                spring-javaformat-maven-plugin
                ${spring.checkstyle.plugin}
                
                    
                        validate
                        true
                    
                
            
        
    

    
        
            dev
            
                
                dev
            
            
                
                true
            
        
        
            test
			
				
				test
			
			
				mental-register
				mental-gateway
				mental-auth
				mental-upms
				mental-common
				mental-visual
			
        
		
            prod
			
				
				prod
			
			
				mental-register
				mental-gateway
				mental-auth
				mental-upms
				mental-common
				mental-visual
			
        
    
        编写DockerFile:

           放入对应模块下

FROM openjdk:17

WORKDIR /mental-auth

ARG JAR_FILE=target/mental-auth.jar

COPY ${JAR_FILE} app.jar

EXPOSE 3000

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"

CMD sleep 60; java $JAVA_OPTS -jar app.jar

安装k8s:

        这里使用kubersphere 的 在 Linux 上以 All-in-One 模式安装 KubeSphere 方式:

在 Linux 上以 All-in-One 模式安装 KubeSphere了解在 Linux 上如何使用最小安装包安装 KubeSphere。本教程为您理解容器平台提供了基础入门知识,为学习以下指南奠定基础。https://kubesphere.io/zh/docs/v3.4/quick-start/all-in-one-on-linux/

【docker】的方式部署:

       

        编写DockerFile:

        在每个模块 编写 DockerFile

FROM openjdk:17

WORKDIR /mental-gateway

ARG JAR_FILE=target/mental-gateway.jar

COPY ${JAR_FILE} app.jar

EXPOSE 9999

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Dfile.encoding=utf-8"

CMD sleep 60; java $JAVA_OPTS -jar app.jar

        编写docker-compose.yml:

          在项目根路径编写docker-compose.yml

version: '3'
services:
  mental-mysql:
    build:
      context: ./db
    environment:
      MYSQL_ROOT_HOST: "%"
      MYSQL_ROOT_PASSWORD: XXXXXX #数据库密码
    restart: always
    container_name: mental-mysql
    image: mental-mysql
    ports:
      - 3306:3306
    volumes:
      - /var/mysql/data:/var/lib/mysql
    networks:
      - mental_network_default

  mental-redis:
    image: registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis
    ports:
      - 6379:6379
    restart: always
    container_name: mental-redis
    hostname: mental-redis
    networks:
      - mental_network_default

  mental-register:
    build:
      context: mental-register
    restart: always
    ports:
      - 8848:8848
      - 9848:9848
    container_name: mental-register
    hostname: mental-register
    image: mental-register
    networks:
      - mental_network_default

  mental-gateway:
    build:
      context: mental-gateway
    restart: always
    ports:
      - 9999:9999
    container_name: mental-gateway
    hostname: mental-gateway
    image: mental-gateway
    networks:
      - mental_network_default

  mental-auth:
    build:
      context: mental-auth
    restart: always
    container_name: mental-auth
    hostname: mental-auth
    image: mental-auth
    networks:
      - mental_network_default

  mental-upms:
    build:
      context: mental-upms/mental-upms-biz
    restart: always
    container_name: mental-upms
    hostname: mental-upms
    image: mental-upms
    networks:
      - mental_network_default

  mental-screen:
    build:
      context: mental-screen/mental-screen-biz
    restart: always
    container_name: mental-screen
    hostname: mental-screen
    image: mental-screen
    networks:
      - mental_network_default

  mental-monitor:
    build:
      context: mental-visual/mental-monitor
    restart: always
    ports:
      - 5001:5001
    container_name: mental-monitor
    hostname: mental-monitor
    image: mental-monitor
    networks:
      - mental_network_default

#  mental-codegen:
#    build:
#      context: ./mental-visual/mental-codegen
#    restart: always
#    container_name: mental-codegen
#    hostname: mental-codegen
#    image: mental-codegen
#    networks:
#      - mental_network_default

#  mental-quartz:
#    build:
#      context: ./mental-visual/mental-quartz
#    restart: always
#    image: mental-quartz
#    container_name: mental-quartz
#    networks:
#      - mental_network_default

networks: #配置自定义桥接网络,可以通过容器名实现容器之间的通信
  mental_network_default:
    name:  mental_network_default
    driver: bridge


        将工程打包成jar包:

        将项目打成压缩包传到服务器上,解压,在项目更目录执行  

# 构建镜像
docker compose build

# 启动容器 (-d 后台启动,建议第一次不要加,方便看错误)
docker compose up -d

你可能感兴趣的:(java,开发语言,微服务)