微服务部署方案-v2

搭建

宿主机需要做的事情

查看可用磁盘大小

# 查看磁盘使用情况,因为磁盘不足会导致后续操作失败,而为了好管理
df -hl	
# 根据磁盘使用情况选择一个合适的文件夹作为后续操作的基础文件夹,通常为 例如 /data/tristan/
mkdir -p /data/tristan

docker化

mkdir -p /data/tristan/docker && cd /data/tristan/docker
vi install.sh
# 运行
chmod +x install.sh
./install.sh

内容如下:

# 查看系统版本
 cat /etc/redhat-release
 
# 更新yum
yum update -y

# 移除掉原来安装的docker
yum -y remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
# 安装依赖软件
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 配置docker的yum仓库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
# 启用仓库的文件
yum-config-manager --enable docker-ce-nightly

# 安装docker-ce
yum install -y docker-ce docker-ce-cli containerd.io


# 设置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://q4jtpmzm.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# 启动docker
systemctl start docker

# 允许开机自启
systemctl enable docker

# 运行一个demo镜像
docker run hello-world

gitlab

https://docs.gitlab.com/omnibus/docker/

# 创建数据挂载点
rm -rf /data/tristan/gitlab/config /data/tristan/gitlab/logs /data/tristan/gitlab/data
mkdir -p  /data/tristan/gitlab/config /data/tristan/gitlab/logs /data/tristan/gitlab/data

# 运行镜像
docker run --detach \
  --hostname 192.168.71.220 \
  --publish 80:80 --publish 2289:22 \
  --name gitlab \
  --restart always \
  --volume /data/tristan/gitlab/config:/etc/gitlab \
  --volume /data/tristan/gitlab/logs:/var/log/gitlab \
  --volume /data/tristan/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest
  
#限制gitlab的内存
docker stop gitlab
docker update --memory-swap 15360M gitlab
docker update --memory 15360M gitlab
docker start gitlab

#查看镜像运行情况
docker logs -f gitlab

http://192.168.71.220:8929 root/tanshilin

为root账号配置密码 root/tanshilin

jenkins

# 创建数据挂载点
mkdir -p /data/tristan/jenkins

# 运行镜像
docker run \
  -u root \
  -d --restart always \
  -p 8080:8080 \
  -p 50000:50000 \
  -v /data/tristan/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name jenkins \
  jenkinsci/blueocean
  
 # 查看镜像运行情况
 docker logs -f jenkins

访问地址:

http://192.168.71.220:8080 访问密码需要从docker的日志控制台拷贝出来

设置admin账号的密码 admin/admin

nexus

# 创建数据挂载点

# 创建本地文件夹
mkdir -p /data/tristan/nexus && chmod 777 /data/tristan/nexus

# 启动容器
docker run -d --restart always -p 8081:8081 --name nexus -v /data/tristan/nexus:/nexus-data sonatype/nexus3

# 查看镜像启动情况
docker logs -f nexus

访问:

http://192.168.71.220:8081	admin/admin123

docker-swarm

# 初始化集群
docker swarm init --advertise-addr 192.168.71.221

portainer

# 数据卷
rm -rf /data/tristan/portainer/*
mkdir -p /data/tristan/portainer

cd /data/tristan

# 管理docker swarm集群
docker service create \
--name portainer \
--publish 9876:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=volume,src=portainer,dst=/data \
portainer/portainer \
-H unix:///var/run/docker.sock

# 运行
docker run -d -p 9876:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /data/tristan/portainer:/data portainer/portainer -H unix:///var/run/docker.sock

访问:

http://192.168.71.221:9876		admin/portainer

一些可能用到的指令

# 清理服务器内存
echo 2 > /proc/sys/vm/drop_caches

项目改造-v2

删除开发工具配置

删除idea/maven/bin/target相关配置

添加.cvsignore 文件,安装 idea-gitignore-3.0.0.141.zip

# Created by .ignore support plugin (hsz.mobi)
### Maven template
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties

# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
!/.mvn/wrapper/maven-wrapper.jar
### Example user template template
### Example user template

# IntelliJ project files
.idea
*.iml
out
gen### Java template
# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
### Example user template template
### Example user template

# IntelliJ project files
gen

调整pom

添加配置

<properties>
	<dockerfile-maven-version>1.4.10</dockerfile-maven-version>	<docker.image.prefix>ebuydockerhub.com:5000</docker.image.prefix>
</properties>


    <distributionManagement>
        <repository>
            <id>${repository.id}</id>
            <name>${repository.name}</name>
            <url>${repository.url}</url>
            <layout>default</layout>
        </repository>
    </distributionManagement>

添加Dockerfile

这个影响到创建docker service 时添加环境变量

cloud-eureka

FROM anapsix/alpine-java:latest
VOLUME /tmp
ARG EUREKA_USER_NAME
ARG EUREKA_USER_PASSWORD
ARG CLOUD_EUREKA_DEFAULTZONE_OTHER
ARG CLOUD_ZIPKIN_BASE_URL
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","${EUREKA_USER_NAME}","${EUREKA_USER_PASSWORD}","${CLOUD_EUREKA_DEFAULTZONE_OTHER}","${CLOUD_ZIPKIN_BASE_URL}"]

cloud-config

FROM anapsix/alpine-java:latest
VOLUME /tmp
ARG CLOUD_EUREKA_DEFAULTZONE
ARG CLOUD_ZIPKIN_BASE_URL
ARG CONFIG_GIT_URI
ARG CONFIG_GIT_USERNAME
ARG CONFIG_GIT_PASSWORD
ARG CONFIG_RABBITMQ_HOST
ARG CONFIG_RABBITMQ_PORT
ARG CONFIG_RABBITMQ_USERNAME
ARG CONFIG_RABBITMQ_PASSWORD
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","${CLOUD_EUREKA_DEFAULTZONE}","${CLOUD_ZIPKIN_BASE_URL}","${CONFIG_GIT_URI}","${CONFIG_GIT_USERNAME}","${CONFIG_GIT_PASSWORD}","${CONFIG_RABBITMQ_HOST}","${CONFIG_RABBITMQ_PORT}","${CONFIG_RABBITMQ_USERNAME}","${CONFIG_RABBITMQ_PASSWORD}"]

子工程

FROM anapsix/alpine-java:latest
VOLUME /tmp
ARG CLOUD_EUREKA_DEFAULTZONE
ARG JASYPT_ENCRYPTOR_PASSWORD
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","${CLOUD_EUREKA_DEFAULTZONE}","${JASYPT_ENCRYPTOR_PASSWORD}"]

添加Jenkinsfile

pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Package') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('Deliver') {
            steps {
                sh 'mvn  dockerfile:build -DskipTests'
                sh 'mvn  dockerfile:tag -DskipTests'
                sh 'mvn  dockerfile:push -DskipTests'
            }
        }
        stage('RebootDocker') {
            steps {
                sh 'curl ${DOCKER_SERVICE_WEBHOOK_URL} -X POST'
            }
        }
    }
}

修改项目配置文件

application.properties/yml

bootstrap.properties/yml

让每一个项目只保留一个bootstrap.yml文件

可以创建application.yml文件

cloud-eureka

# 配置端口
server:
  port: 9000
# 配置注册中心服务配置
eureka:
  server:
    enable-self-preservation:  false # 关闭自我保护模式(缺省为启动,比如api提供者关闭了,但是eureka仍然会保留)
    eviction-interval-timer-in-ms: 10000 # 清理间隔(毫秒,默认 60秒),将有问题的api提供者或app消费者剔除掉
  instance:
    hostname: localhost
    prefer-ip-address: true
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      # 从配置中心获取关键配置,增强安全性
      defaultZone: ${cloud_eureka_defaultzone_other:http://root:123456@localhost:9000/eureka/}
# 配置中心命名
spring:
  application:
    name: server-eureka
  zipkin:
    base-url: ${cloud_zipkin_base_url:http://localhost:6100}
  # 链路追踪抽样比例,生产改为0.1
  sleuth:
    sampler:
      probability: 1.0

  security:
    user:
      name: ${eureka_user_name:root}          # 用户名
      password: ${eureka_user_password:123456}    # 密码

cloud-config

server:
  port: 9201
spring:
  application:
    name: cloud-config
  cloud:
    config:
      server:
        default-application-name: cloud-config
        git:
          uri: ${config_git_uri:http://192.168.71.220/root/ebuy-cloud-config-dev.git}
          username: ${config_git_username:tristan}
          password: ${config_git_password:tanshilin}
      label: master
  rabbitmq:
    host: ${config_rabbitmq_host:192.168.71.146}
    port: ${config_rabbitmq_port:5672}
    username: ${config_rabbitmq_username:admin}
    password: ${config_rabbitmq_password:123456}
  zipkin:
    base-url: ${cloud_zipkin_base_url:http://localhost:6100}
  sleuth:
    sampler:
      probability: 1.0
eureka:
  client:
    serviceUrl:
      defaultZone: ${cloud_eureka_defaultzone:http://root:123456@localhost:9000/eureka/}
  instance:
    prefer-ip-address: true
management:
  endpoints:
    web:
      exposure:
        include: bus-refresh


cloud-gateway

gitlab

git add -A

git commit -m "test"

git push

创建主干流

v1

因为trunk流遗留的maven build问题,需要全部修改build

使用搭建-v2

jenkins

创建视图

v1

过滤 v1-

丢弃旧的构建

参数化构建

jenkinsfile写法:

pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Deliver') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('RebootDocker') {
            steps {
                sh 'curl baidu.com ${DOCKER_SERVICE_WEBHOOK_URL} -X POST'
            }
        }
    }
}

pom.xml build写法:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!--构建发布到docker私有库上-->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.10</version>
            <configuration>
                <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                <repository>${dockerRegistry.url}</repository>
                <tag>${project.artifactId}-${project.version}</tag>
                <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>
                <retryCount>0</retryCount>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
            <executions>
                <execution>
                    <id>default</id>
                    <phase>package</phase>
                    <goals>
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

准备配置文件文件夹

在主机器上 192.168.71.220
上传该项目的配置文件压缩包
移动到指定文件夹
mv /data/ebuy-cloud/service-elasticsearch/

明确svn

http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1

parent

# 名称
v1-parent

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1


cloud-commons

# 名称
v1-cloud-commons

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-commons

cloud-eureka

# 名称
v1-cloud-eureka

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/528b9a61-ed90-4f96-8523-fcc054553163 http://192.168.71.220:9876/api/webhooks/d7a1d402-4858-4baf-9c67-b694adf9bb1a 

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-eureka

# docker service
cloud-eureka-0.0.1-SNAPSHOT

#############################cloud-eureka#############################
cloud-eureka
ebuy-cloud/ebuy-cloud:cloud-eureka-0.0.1-SNAPSHOT

# 注入参数
EUREKA_USER_NAME				=	root
EUREKA_USER_PASSWORD			=	123456
CLOUD_EUREKA_DEFAULTZONE_OTHER	=	http://root:[email protected]:9001/eureka/
CLOUD_ZIPKIN_BASE_URL			= 	

# 配置网络
ebuy-cloud
ingress 9000:9000

# 挂载时间
/etc/localtime:/etc/localtime

#############################cloud-eureka-2#############################
cloud-eureka-2
ebuy-cloud/ebuy-cloud:cloud-eureka-0.0.1-SNAPSHOT


# 注入参数
EUREKA_USER_NAME				=	root
EUREKA_USER_PASSWORD			=	123456
CLOUD_EUREKA_DEFAULTZONE_OTHER	=	http://root:[email protected]:9000/eureka/
CLOUD_ZIPKIN_BASE_URL			= 

# 配置网络
ebuy-cloud
ingress 9001:9000

# 挂载时间
/etc/localtime:/etc/localtime

cloud-config

# 名称
v1-cloud-config

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/7a3df179-d7a1-4012-aaa6-bad9c6829e4e

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-config


# docker service
cloud-config-0.0.1-SNAPSHOT
cloud-config
ebuy-cloud/ebuy-cloud:cloud-config-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
CLOUD_ZIPKIN_BASE_URL					=
CONFIG_GIT_URI							=	http://192.168.71.220/ebuy-cloud-test/ebuy-cloud-config.git
CONFIG_GIT_USERNAME						=	ebuy-cloud-test-report
CONFIG_GIT_PASSWORD						=	ebuy-cloud-test-report
CONFIG_RABBITMQ_HOST					=	192.168.71.173
CONFIG_RABBITMQ_PORT					=	5672
CONFIG_RABBITMQ_USERNAME				=	admin
CONFIG_RABBITMQ_PASSWORD				=	admin

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

server-oauth2

# 名称
v1-server-oauth2

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/909a8024-b52b-4ce1-99d3-734635f3924d

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/server-oauth2



# docker service
server-oauth2-0.0.1-SNAPSHOT
server-oauth2
ebuy-cloud/ebuy-cloud:server-oauth2-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud
ingress	9403:9403

# 挂载时间
/etc/localtime:/etc/localtime

cloud-gateway

# 名称
v1-cloud-gateway

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/dc3b35d1-5790-4838-a971-f327a1fabc32

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-gateway

# docker service
cloud-gateway-0.0.1-SNAPSHOT
cloud-gateway
ebuy-cloud/ebuy-cloud:cloud-gateway-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud
host 5001:5000

# 挂载时间
/etc/localtime:/etc/localtime


cloud-modules

# 名称
v1-cloud-modules

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-modules


service-erp

# 名称
v1-service-erp

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/a695d79b-e3b9-46bf-a779-6bbb051e68ef

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-modules/service-erp

# docker service
service-erp-0.0.1-SNAPSHOT
service-erp
ebuy-cloud/ebuy-cloud:service-erp-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime


service-logistics

# 名称
v1-service-logistics

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/51e18140-9e46-46a0-afc7-db4723342149

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-modules/service-logistics


# docker service
service-logistics-0.0.1-SNAPSHOT
service-logistics
ebuy-cloud/ebuy-cloud:service-logistics-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

service-mrp

# 名称
v1-service-mrp

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/6669af4c-c4e8-4676-9e4f-b2a24a0ece88

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-modules/service-mrp

# docker service
service-mrp-0.0.1-SNAPSHOT
service-mrp
ebuy-cloud/ebuy-cloud:service-mrp-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

service-plan

# 名称
v1-service-plan

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/78797a26-0b49-4022-990e-f347d7eefc39

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-modules/service-plan

# docker service
service-plan-0.0.1-SNAPSHOT
service-plan
ebuy-cloud/ebuy-cloud:service-plan-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

service-procurement

# 名称
v1-service-procurement

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/7436c0e6-5e9a-4431-929e-f161e1b64cdf

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-modules/service-procurement

# docker service
service-procurement-0.0.1-SNAPSHOT
service-procurement
ebuy-cloud/ebuy-cloud:service-procurement-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

service-product

# 名称
v1-service-product

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/31343324-906e-4502-823c-8a176207efb2

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-modules/service-product

# docker service
service-product-0.0.1-SNAPSHOT
service-product
ebuy-cloud/ebuy-cloud:service-product-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

cloud-datacenter

# 名称
v1-cloud-datacenter

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-datacenter/trunk



service-oa

# 名称
v1-service-oa

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/506d87c5-df10-48cf-9ae2-fdd016902452

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-datacenter/trunk/service-oa

# docker service
service-oa-0.0.1-SNAPSHOT
service-oa
ebuy-cloud/ebuy-cloud:service-oa-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

service-elasticsearch

# 名称
v1-service-elasticsearch

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-datacenter/trunk/service-elasticsearch

# docker service
service-elasticsearch-0.0.1-SNAPSHOT
service-elasticsearch
ebuy-cloud/ebuy-cloud:service-elasticsearch-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind	/etc/localtime				/etc/localtime
Bind 	/data/ebuy-cloud-config/	/data/ebuy-cloud-config/

cloud-basics

# 名称
v1-cloud-basics

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-basics





service-alibaba-order

# 名称
v1-service-alibaba-order

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/6f7b8156-07d2-421c-b841-11c03584a6c8

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-basics/service-alibaba-order

# docker service
service-alibaba-order-0.0.1-SNAPSHOT
service-alibaba-order
ebuy-cloud/ebuy-cloud:service-alibaba-order-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

service-file

# 名称
v1-service-file

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/9311c44c-970f-4cf9-b558-55bc46b48cd6

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-basics/service-file

# docker service
service-file-0.0.1-SNAPSHOT
service-file
ebuy-cloud/ebuy-cloud:service-file-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

service-util

# 名称
v1-service-util

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/branches/v1/cloud-basics/service-util

# docker service
service-util-0.0.1-SNAPSHOT
service-util
ebuy-cloud/ebuy-cloud:service-util-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载时间
/etc/localtime:/etc/localtime

ip记录

http://192.168.71.220/ebuy-cloud-dev/ebuy-cloud-config

http://192.168.71.220/ebuy-cloud-test/ebuy-cloud-config

https://cr.console.aliyun.com/repository/cn-shenzhen/ebuy-cloud/ebuy-cloud/images

http://192.168.71.220:8080/view/v1/

http://192.168.71.220:8080/blue/pipelines/

http://192.168.71.220:9876/#/services

使用搭建-v2.1

子服务

创建视图

过滤

丢弃旧的构建

参数化构建

Dockerfile写法:

FROM anapsix/alpine-java:latest
ARG CLOUD_EUREKA_DEFAULTZONE
ARG JASYPT_ENCRYPTOR_PASSWORD
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
RUN echo 'Asia/Shanghai' > /etc/timezone
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","${CLOUD_EUREKA_DEFAULTZONE}","${JASYPT_ENCRYPTOR_PASSWORD}"]

jenkinsfile写法:

pipeline {
    agent {
        docker {
            image 'maven:3-alpine'
            args '-v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Deliver') {
            steps {
                sh 'mvn clean package -DskipTests'
            }
        }
        stage('RebootDocker') {
            steps {
                sh 'curl baidu.com ${DOCKER_SERVICE_WEBHOOK_URL} -X POST'
            }
        }
    }
}

pom.xml build写法:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!--构建发布到docker私有库上-->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.10</version>
            <configuration>
                <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                <repository>${dockerRegistry.url}</repository>
                <tag>${project.artifactId}-${project.version}</tag>
                <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>
                <retryCount>0</retryCount>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
            <executions>
                <execution>
                    <id>default</id>
                    <phase>package</phase>
                    <goals>
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

准备配置文件文件夹

在主机器上 192.168.71.220
上传该项目的配置文件压缩包
移动到指定文件夹
mv /data/ebuy-cloud/service-elasticsearch/

http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk

parent

# 名称
parent

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk


cloud-commons

# 名称
cloud-commons

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-commons

cloud-eureka

# 名称
cloud-eureka

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/92bf2492-1be9-4352-bf69-6b1daddc5d8b http://192.168.71.220:9876/api/webhooks/cdc91854-fc5d-4bc3-a2d1-b696c3bce9e8

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-eureka

# docker service
cloud-eureka-0.0.1-SNAPSHOT

#############################cloud-eureka#############################
cloud-eureka
ebuy-cloud/ebuy-cloud:cloud-eureka-0.0.1-SNAPSHOT

# 配置网络
ebuy-cloud
ingress 9000:9000

# 注入参数
EUREKA_USER_NAME				=	root
EUREKA_USER_PASSWORD			=	123456
CLOUD_EUREKA_DEFAULTZONE_OTHER	=	http://root:[email protected]:9002/eureka/
CLOUD_ZIPKIN_BASE_URL			= 	

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime:ro 		Read-only

#############################cloud-eureka-2#############################
cloud-eureka-2
ebuy-cloud/ebuy-cloud:cloud-eureka-0.0.1-SNAPSHOT

# 配置网络
ebuy-cloud
ingress 9002:9000

# 注入参数
EUREKA_USER_NAME				=	root
EUREKA_USER_PASSWORD			=	123456
CLOUD_EUREKA_DEFAULTZONE_OTHER	=	http://root:[email protected]:9000/eureka/
CLOUD_ZIPKIN_BASE_URL			= 

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

cloud-config

# 名称
cloud-config

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/5869a118-9099-49c9-a683-0e67d11ecde6

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-config


# docker service
cloud-config-0.0.1-SNAPSHOT
cloud-config
ebuy-cloud/ebuy-cloud:cloud-config-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9002/eureka/
CLOUD_ZIPKIN_BASE_URL					=
CONFIG_GIT_URI							=	http://192.168.71.220/ebuy-cloud-test/ebuy-cloud-config.git
CONFIG_GIT_USERNAME						=	ebuy-cloud-test-report
CONFIG_GIT_PASSWORD						=	ebuy-cloud-test-report
CONFIG_KAFKA_HOST						=	192.168.71.223
CONFIG_KAFKA_PORT						=	9092
CONFIG_ZK_PORT							=	2181

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

server-oauth2

# 名称
server-oauth2

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/61c9233c-ceee-4382-80d2-56b057fc7a36

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/server-oauth2



# docker service
server-oauth2-0.0.1-SNAPSHOT
server-oauth2
ebuy-cloud/ebuy-cloud:server-oauth2-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud
ingress	9403:9403

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

cloud-gateway

# 名称
cloud-gateway

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/105de6bf-14c8-46b9-88ea-81e8b6fdc5ac

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-gateway

# docker service
cloud-gateway-0.0.1-SNAPSHOT
cloud-gateway
ebuy-cloud/ebuy-cloud:cloud-gateway-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud
Ingress		host 5000:5000

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only


cloud-modules

# 名称
cloud-modules

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules


service-erp

# 名称
service-erp

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/dcd20845-f022-435e-8e14-306fd42ae578

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-erp

# docker service
service-erp-0.0.1-SNAPSHOT
service-erp
ebuy-cloud/ebuy-cloud:service-erp-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only


service-logistics

# 名称
service-logistics

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/3599f504-bf4c-44c8-bd24-b97ef1163a43

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-logistics


# docker service
service-logistics-0.0.1-SNAPSHOT
service-logistics
ebuy-cloud/ebuy-cloud:service-logistics-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-mrp

# 名称
service-mrp

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/7871cd3a-7697-4d5b-9bfb-3f4d01a4b152

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-mrp

# docker service
service-mrp-0.0.1-SNAPSHOT
service-mrp
ebuy-cloud/ebuy-cloud:service-mrp-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-plan

# 名称
service-plan

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/ed7ae254-82c1-41fd-b215-c96d2a08238c

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-plan

# docker service
service-plan-0.0.1-SNAPSHOT
service-plan
ebuy-cloud/ebuy-cloud:service-plan-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-procurement

# 名称
service-procurement

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/8234ebd9-08dc-4fc2-842d-3edb6da406ef

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-procurement

# docker service
service-procurement-0.0.1-SNAPSHOT
service-procurement
ebuy-cloud/ebuy-cloud:service-procurement-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-product

# 名称
service-product

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/6b220268-6908-4a02-9ca7-ad36d0d8760b

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-product

# docker service
service-product-0.0.1-SNAPSHOT
service-product
ebuy-cloud/ebuy-cloud:service-product-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-erp-crm

# 名称
service-erp-crm

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/6b220268-6908-4a02-9ca7-ad36d0d8760b

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-erp-crm

# docker service
service-erp-crm-0.0.1-SNAPSHOT
service-erp-crm
ebuy-cloud/ebuy-cloud:service-erp-crm-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-crm

# 名称
service-crm

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-modules/service-crm

# docker service
service-crm-0.0.1-SNAPSHOT
service-crm
ebuy-cloud/ebuy-cloud:service-crm-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

cloud-datacenter

# 名称
cloud-datacenter

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-datacenter/trunk



service-oa

# 名称
service-oa

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/7b77cea5-edc3-4f53-9138-cb7a059764a5

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-datacenter/trunk/service-oa

# docker service
service-oa-0.0.1-SNAPSHOT
service-oa
ebuy-cloud/ebuy-cloud:service-oa-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-elasticsearch

# 名称
service-elasticsearch

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/87cad527-459c-4666-848a-242df595fa96

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-datacenter/trunk/service-elasticsearch

# docker service
service-elasticsearch-0.0.1-SNAPSHOT
service-elasticsearch
ebuy-cloud/ebuy-cloud:service-elasticsearch-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime				/etc/localtime				Read-only
Bind 		/data/ebuy-cloud-config/	/data/ebuy-cloud-config/	Read-only

cloud-basics

# 名称
cloud-basics

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-basics





service-alibaba-order

# 名称
service-alibaba-order

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/d3e8a84a-91e6-4e8d-9245-fd17b5b89f81

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-basics/service-alibaba-order

# docker service
service-alibaba-order-0.0.1-SNAPSHOT
service-alibaba-order
ebuy-cloud/ebuy-cloud:service-alibaba-order-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-file

# 名称
service-file

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/9def98e6-f936-48d0-ab10-b3a52316ae4a

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-basics/service-file

# docker service
service-file-0.0.1-SNAPSHOT
service-file
ebuy-cloud/ebuy-cloud:service-file-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-util

# 名称
service-util

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	http://192.168.71.220:9876/api/webhooks/e02d7642-f68b-447d-935f-2c397e27befc

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-basics/service-util

# docker service
service-util-0.0.1-SNAPSHOT
service-util
ebuy-cloud/ebuy-cloud:service-util-0.0.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

service-mail

# 名称
service-mail

# jenkins注入参数
DOCKER_SERVICE_WEBHOOK_URL	=	 http://192.168.71.220:9876/api/webhooks/59336ba9-a081-44dd-8bb6-76506a05b93c

# svn地址
http://192.168.71.205:8088/svn/yibai_cloud/trunk/codes/java/ebuy-cloud/trunk/cloud-basics/service-mail

# docker service
service-mail-1.1-SNAPSHOT
service-mail
ebuy-cloud/ebuy-cloud:service-mail-1.1-SNAPSHOT

# docker service 注入参数
CLOUD_EUREKA_DEFAULTZONE				=	http://root:[email protected]:9000/eureka/,http://root:[email protected]:9001/eureka/
JASYPT_ENCRYPTOR_PASSWORD				=l&id81!lw

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

中间件

xxljob

# docker service
xuxueli/xxl-job-admin:2.0.1
xxl-job-admin

# docker service 注入参数
PARAMS			=	--spring.datasource.url=jdbc:mysql://192.168.71.219:3306/xxl-job?Unicode=true&characterEncoding=UTF-8 --spring.datasource.username=javaappuser --spring.datasource.password=javaappuser --spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 配置网络
ebuy-cloud

# 挂载数据卷
Bind		/etc/localtime		/etc/localtime		Read-only

kafka

nohup /usr/local/kafka_2.11-1.1.1/bin/kafka-server-start.sh 	/usr/local/kafka_2.11-1.1.1/config/server.properties &

zookeeper

sh /usr/local/zookeeper-3.4.12/bin/zkServer.sh	start
sh /usr/local/zookeeper-3.4.12/bin/zkServer.sh	status
sh /usr/local/zookeeper-3.4.12/bin/zkServer.sh	stop

ip记录

http://192.168.71.220/ebuy-cloud-dev/ebuy-cloud-config

http://192.168.71.220/ebuy-cloud-test/ebuy-cloud-config

https://cr.console.aliyun.com/repository/cn-shenzhen/ebuy-cloud/ebuy-cloud/images

http://192.168.71.220:8080/view/trunk

http://192.168.71.220:8080/blue/pipelines/

http://192.168.71.220:9876/#/services

日志采集分析

分析

容器将日志发送给elk
	1、容器内嵌
	2、容器日志重定向

ELK

https://github.com/deviantony/docker-elk

# 创建保存elk文件的文件夹
mkdir -p /data/tristan/elk  && cd /data/tristan/elk

# 下载docker stack 文件
 wget https://github.com/deviantony/docker-elk/archive/master.zip

#解压并进入该docker stack 文件位置
unzip master.zip &&	cd docker-elk-master

# 修改es的内存
vi docker-stack.yml 
# 将256 改为 2048

# 初始化docker swarm集群
docker swarm init

# 运行容器
docker stack deploy -c docker-stack.yml elk

几个访问地址:

地址 名称 认证
http://192.168.71.223:9999/#/services portainer admin/portainer
http://192.168.71.223:5601/ kibana
  • 5000: Logstash TCP input.
  • 9200: Elasticsearch HTTP
  • 9300: Elasticsearch TCP transport
  • 5601: Kibana

kibna使用

kibana地址: http://192.168.71.220:5601/app/kibana#/home?_g=()

​ 在Manager界面创建zipkin*的索引

​ 在Discory界面查看zipkin*索引下的日志

​ 通过id进行聚合

docker service

http://dockone.io/article/2252

在docker swarm的service 详情界面设置 Logging Driver 为 syslog

添加参数: syslog-address tcp://192.168.71.223:5000

zipkinServer

docker run -d -p 9411:9411 --name zipkin --restart always \
  -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.71.223:9200 \
  openzipkin/zipkin

http://192.168.71.220:9411

整体思路-v2

------------------------------------------------------1、工程代码优化----------------------

工程代码优化
禁止开发修改本地配置文件,除了config工程有默认配置外其他工程没有除eurekaServer之外的默认配置
禁止开发提交非工程代码(idea相关配置)到svn因为合并代码时会冲突
禁止maven依赖只存放到本地的maven仓库中
禁止服务名和文件夹名和配置文件名称不相同
禁止打印日志文件的内容为文件类型
当测试发现代码bug时需要在该流修复bug并提交代码,然后trunk流从该版本流中更新代码并提交(与之相反的是git的pr模式)

集成 限制了execute命令的spring boot build、maven docker 插件
配置优化,配置文件放到gitlab中,工程中完全不保留配置文件,只保留bootstrap.yml文件,而且子服务全部统一
构建过程中的非基础依赖包不允许打到nexus中
集成jenkinsfile、dockerfile文件,参数动态化

每一个工程都要加上spring boot admin/zipkin

------------------------------------------------------2、配置文件gitlab化----------------------

配置文件gitlab化:
创建ebuy-cloud-dev、ebuy-cloud-test、ebuy-cloud-prod 三个项目给root
创建ebuy-cloud-dev、ebuy-cloud-test、ebuy-cloud-prod 三个成员组
依次将三个成员组添加到三个项目的成员组中,(这样就形成了该配置项目除了项目组和root账号之外没有其他人有权限去访问)
实行自行注册用户的方式
由root账号添加该账号到该成员组

------------------------------------------------------3、gitlab权限控制----------------------

创建trunk流的v1版本流

------------------------------------------------------4、创建trunk流的v1版本流----------------------

ebuy-cloud-config-dev
ebuy-cloud-dev
ebuy-cloud-dev-system/ebuy-cloud-dev-system

ebuy-cloud-config-test
ebuy-cloud-test
ebuy-cloud-test-system/ebuy-cloud-test-system

ebuy-cloud-config-product
ebuy-cloud-product-system/

使用钉钉名称注册人员账号

创建ebuy-cloud-dev-system/ebuy-cloud-test-system/ebuy-cloud-product-system三个系统用户
创建ebuy-cloud-dev-report/ebuy-cloud-test-report/ebuy-cloud-product-report三个只读用户
创建ebuy-cloud-dev/ebuy-cloud-test/ebuy-cloud-product三个用户组
依次添加用户到用户组并设置权限 系统用户为 Maintainer权限,只读用户为 Report权限

root账号创建ebuy-cloud-config配置项目

从高向低fork项目
fork root/ebuy-cloud-config -> ebuy-cloud-product/ebuy-cloud-config
fork ebuy-cloud-product/ebuy-cloud-config -> ebuy-cloud-test/ebuy-cloud-config
fork ebuy-cloud-test/ebuy-cloud-config -> ebuy-cloud-dev/ebuy-cloud-config

从低给高授权(Developer权限)
grant ebuy-cloud-dev/ebuy-cloud-config -> ebuy-cloud-test
grant ebuy-cloud-test/ebuy-cloud-config -> ebuy-cloud-product

低修改之后查看自己的项目中 高(项目名称一致且所属者后缀不同)的项目的成员,在钉钉找到该成员之后发送消息 合并配置文件
高登录之后向低发起合并请求然后去合并代码

------------------------------------------------------5、阿里云创建docker容器镜像仓库----------------------

使用主账号登录阿里云
创建私有库的命名空间
创建子账号
给子账号授予镜像仓库的管理权限
登录子账号
创建私有库

docker login --username=xxx@xxx registry.cn-shenzhen.aliyuncs.com
xxx

配置到portainer中/settings.xml
registry.cn-shenzhen.aliyuncs.com/xxx/xxx
xxx@xxx/xxx

docker宿主机的实践:

docker run -it hello-world

docker tag hello-world registry.cn-shenzhen.aliyuncs.com/ebuy-cloud/ebuy-cloud:hello-world
docker push registry.cn-shenzhen.aliyuncs.com/ebuy-cloud/ebuy-cloud:hello-world

docker rmi registry.cn-shenzhen.aliyuncs.com/ebuy-cloud/ebuy-cloud:hello-world

docker pull registry.cn-shenzhen.aliyuncs.com/ebuy-cloud/ebuy-cloud:hello-world
docker run -it registry.cn-shenzhen.aliyuncs.com/ebuy-cloud/ebuy-cloud:hello-world

portainer中的实践

创建镜像库
配置docker私有库
registry.cn-shenzhen.aliyuncs.com
registry.cn-shenzhen.aliyuncs.com
xxx@xxx
xxx
创建docker service
hello-world
ebuy-cloud/ebuy-cloud:hello-world

------------------------------------------------------6、修改settting.xml-暂时不动 ----------------------

修改nexus
创建ebuy-cloud-release角色(拥有*release的所有权限)
创建ebuy-cloud-release用户

------------------------------------------------------7、配置Jenkins----------------------

– 目前内存问题迫在眉睫,必须要尽快将v2搞完
创建基于 配置文件项目 dev环境 的 测试环境流

jenkins: --滞后
权限
创建job

------------------------------------------------------8、推送到docker私有镜像库----------------------

使用maven docker 构建插件
配置settings.xml的docker registry认证
使用阿里云子账号登录查看容器镜像仓库的镜像版本的版本
https://cr.console.aliyun.com/repository/cn-shenzhen/ebuy-cloud/ebuy-cloud/images
xxx/xxx

------------------------------------------------------9、docker 集群化----------------------

docker集群化-docker swarm版
docker swarm init --advertise-addr 192.168.71.220
使用 docker swarm join-token worker 查看 token
使用 docker info 查看docker信息
使用 docker swarm leave --force 退出集群
使用 docker node rm --force otutp8noc3dxcgikrnxxw5bm7 删除已经离开的docker实例

221/104/105
docker swarm join --token SWMTKN-1-19laqx2rt1bfluxeb9mai7ndlgzmwhr31i0jc8euujmv13eucd-1zy6w33exwxay21ta6lefcty1 192.168.71.220:2377
在docker manage的机器上启动portainer即可

------------------------------------------------------10、拉取私有镜像并启动----------------------

在portainer上配置docker registry
registry.cn-shenzhen.aliyuncs.com
registry.cn-shenzhen.aliyuncs.com
xxx@xxx
xxx

cloud-eureka-0.0.1-SNAPSHOT

cloud-eureka
ebuy-cloud/ebuy-cloud:cloud-eureka-0.0.1-SNAPSHOT

容器会随机跑到任何docker swarm worker机器上
在任意集群可以访问到该docker service 映射的服务,目前推荐使用104作为对外服务器
123456

------------------------------------------------------11、docker网络问题----------------------

任意brige网络
任意一台服务器在外部都可以访问到,会覆盖原有宿主机的端口
注册到eureka上的ip还是不可外部访问的
解决方法:
1、
在选择network时使用host方式,那么注册到eureka中的地址就是宿主机的ip了,但是这个时候的每一个宿主机的端口就是一个问题了

2、创建overlay网络,所有的docker service在创建的时候选择该overlay网络

组合使用,在需要明确主机的地方使用
或者直接使用ingress

固定docker service运行在指定主机
在portainer的swarm界面修改指定docker worker的label
104: isEureka104=true

105: isEureka105=true

在创建docker service 配置label
创建Service label

isEureka104=isEureka104
isEureka105=isEureka105
gateway220=gateway220

配置网络为ebuy-cloud

原理: 通过为主机标记label,且创建docker service时指定label
注意: label的值不要为true

即使指定了label,如果该主机的负载过大也会导致指定失败

docker 实际运行的机器会飘动很频繁,通过label去固定也是没有起到效果

123456
容器没有固定到ip的问题
导致 eureka/eureka-2、网关、oauth2

fanel

解决时间不一致问题:

挂载主机上的 /etc/localtime 到容器中的 /etc/localtime 并且设置时区

https://docs.docker.com/compose/compose-file/

总结

在第二个部署版本中:
我会着重解决几个问题:
	部署设施:
		权限隔离问题: jenkins/nexus/gitlab/
		jenins自动进行: 测试、分析代码质量、发送测试报告
		
	系统:
		docker化部署
		网络(docker)
		多主机部署
		服务多节点部署
		更方便快捷解决版本流的问题
		工程配置文件完全git化
		
	工程管理:
		将测试环境的jenkins和禅道结合
			测试提出bug推给组长,
									组长分给开发,
													开发解决问题或者提议bug时回传给测试,
			测试验证bug或者复议后关闭bug或者传给组长或者开发
									组长分给其他开发
													开发解决问题或者提议bug时回传给测试

猜你喜欢

转载自blog.csdn.net/qq_35559756/article/details/89448228