天天看点

微服务小范围发布影响小

1 看下项目结构,

微服务小范围发布影响小

首先要有dockerfile,

FROM git.we3tu.com:5000/tomcatmaven:latest

RUN apk --update add wget

RUN mkdir -p /usr/src/app

RUN mkdir -p /usr/scripts

RUN mkdir -p /www

WORKDIR /usr/src/app

COPY . /usr/src/app

RUN unzip /usr/src/app/target/visa.war -d /opt/tomcat/webapps/ROOT

RUN cp /usr/src/app/start.sh /usr/scripts

RUN rm -rf /usr/src/app

ENTRYPOINT ["/bin/sh","/usr/scripts/start.sh"]

2 关于应用的配置文件用变量传递下载到测试环境或生产环境

vim start.sh

#! /bin/sh

wget http://$DOMAIN_ENV.config.we3tu.com/$PROJECTNAME/dev/application.properties -O /opt/tomcat/webapps/ROOT/WEB-INF/classes/dev/application.properties 测试环境配置文件路径

wget http://$DOMAIN_ENV.config.we3tu.com/$PROJECTNAME/pro/application.properties -O /opt/tomcat/webapps/ROOT/WEB-INF/classes/pro/application.properties 生产环境配置文件路径

wget http://$DOMAIN_ENV.config.we3tu.com/$PROJECTNAME/applicationContext.xml -O /opt/tomcat/webapps/ROOT/WEB-INF/classes/applicationContext.xml

/opt/tomcat/bin/catalina.sh run

3 vim .gitlab-ci.yml

stages:

build

deploy

variables:

PROJECT_NAME: visa

build_test_docker:

stage: build

script:

mvn package -Dmaven.test.skip=true

docker build -f Dockerfile -t $PROJECT_NAME .

docker tag $PROJECT_NAME git.we2tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME

docker push git.we3tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME

tags:

cyjavatest

only:

/^release-*/

deploy_test_docker:

stage: deploy

docker stack deploy -c deploy/deploy.test.yml visa_service_test

build_master_docker:

mvn clean package -Dmaven.test.skip=true

docker tag $PROJECT_NAME git.we2tu.com:5000/$PROJECT_NAME:latest

docker push git.we3tu.com:5000/$PROJECT_NAME:latest

erpjavabuild

master

deploy_prod_docker:

docker stack deploy -c deploy/deploy.prod.yml visa_service

erpprodshell

4 部署的路径怎么部署:

vim deploy.test.yml

version: '3'

services:

visa_service_test:

image: git.we3tu.com:5000/$PROJECT_NAME:$CI_COMMIT_REF_NAME

environment:

"DOMAIN_ENV=test"

"PROJECTNAME=visa"

"QUARTZ_ENV=noquartz"

logging:

driver: syslog

options:

syslog-address: "tcp://x.x.x.x:5514"

tag: $PROJECT_NAME

ports:

8021:8080

deploy:

replicas: 1

update_config:

parallelism: 1

delay: 10s

restart_policy:

condition: any

networks:

docker-cy-test

docker-cy-test:

external: true

5 vim deploy.prod.yml

visa_service:

"DOMAIN_ENV=prod"

driver: json-file

replicas: 2

max_attempts: 10

prod-net

prod-net:

这里的配置中心采用nginx 的autoindex on 这个功能

写一个dockerfile: docker-compose.yml

nginx:

image: nginx

privileged: false

restart: always

80:80

1001:1001

1002:1002

1003:1003

1004:1004

1005:1005

1006:1006

1007:1007

volumes:

./data/conf.d:/etc/nginx/conf.d

./data/html:/usr/share/nginx/html

继续阅读