Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»¹ÔÚÓÃJenkins£¿ÊÔÊÔGitlabµÄCI/CD¹¦Äܰɣ¬Ôô´ø¾¢£¡
 
  1907  次浏览      27
2021-7-30
 
±à¼­ÍƼö:
±¾ÎÄÖ¼ÔÚ½éÉÜDockerºÍSpring BootÊǷdz£Á÷ÐеÄ×éºÏ£¬ÎÒÃǽ«ÀûÓÃGitLab CIµÄÓÅÊÆ£¬²¢ÔÚÓ¦ÓóÌÐò·þÎñÆ÷ÉÏ×Ô¶¯¹¹½¨£¬ÍÆËͺÍÔËÐÐDocker¾µÏñµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚÂëÔ³¼¼ÊõרÀ¸ £¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­ÍƼö¡£

GitLab CI

Gitlab CI/CD·þÎñÊÇGitLabµÄÒ»²¿·Ö£¬Ã¿µ±¿ª·¢ÈËÔ±½«´úÂëÍÆË͵½GitLab´æ´¢¿âʱ£¬Ëü¶¼»áÔÚËùÐèµÄ»·¾³Öй¹½¨£¬²âÊԺʹ洢×îеĸü¸Ä¡£

Ñ¡ÔñGitLab CIµÄһЩÖ÷ÒªÔ­Òò£º

1.Ò×ÓÚѧϰ£¬Ê¹ÓúͿÉÀ©Õ¹

2.ά»¤ÈÝÒ×

3.ÕûºÏÈÝÒ×

4.CIÍêÈ«ÊôÓÚGitLab´æ´¢¿âµÄÒ»²¿·Ö

5.Á¼ºÃµÄDocker¼¯³É

6.¾µÏñÍйÜ(Container registry)-»ù±¾ÉÏÊÇÄã×Ô¼ºµÄ˽ÓÐDocker Hub

7.´Ó³É±¾ÉÏÀ´Ëµ£¬GitLab CIÊÇÒ»¸öºÜºÃµÄ½â¾ö·½°¸¡£Ã¿¸öÔÂÄãÓÐ2000·ÖÖÓµÄÃâ·Ñ¹¹½¨Ê±¼ä£¬¶ÔÓÚijЩÏîÄ¿À´Ëµ£¬ÕâÊǴ´ÂÓÐÓàµÄ

ΪʲôGitLab CI³¬Ô½Jenkins

ÕâÎÞÒÉÊÇÒ»¸ö¹ã·ºÌÖÂ۵ϰÌ⣬µ«ÊÇÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«²»ÉîÈë̽Ìָû°Ìâ¡£GitLab CIºÍJenkins¶¼ÓÐÓŵãºÍȱµã£¬ËüÃǶ¼Êǹ¦Äܷdz£Ç¿´óµÄ¹¤¾ß¡£

ÄÇΪʲôѡÔñGitLab£¿

ÈçǰËùÊö£¬CIÍêÈ«ÊÇGitLab´æ´¢¿âµÄÒ»²¿·Ö£¬ÕâÒâζ×Ų»ÐèÒª°²×°Ëü£¬²¢ÇÒά»¤×îÉÙ¡£yml½Å±¾Íê³Éºó£¬Äã±ã»ò¶à»òÉÙµØÍê³ÉÁËËùÓй¤×÷¡£

¶ÔÓÚСÐÍÏîĿʹÓÃJenkins£¬Äã¾Í±ØÐë×Ô¼ºÉèÖúÍÅäÖÃËùÓÐÄÚÈÝ¡£Í¨³££¬Ä㻹ÐèҪһ̨רÓõÄJenkins·þÎñÆ÷£¬ÕâÒ²ÐèÒª¶îÍâµÄ³É±¾ºÍά»¤¡£

ʹÓÃGitLab CI ǰÌáÌõ¼þ

Èç¹ûÐèÒªÓëÕâЩǰÌáÌõ¼þÓйصÄÈκΰïÖú£¬ÎÒÒÑÌṩÏàÓ¦Ö¸ÄϵÄÁ´½Ó¡£

1.ÄãÒѾ­ÔÚGitLabÉÏÍÆËÍÁËSpring BootÏîÄ¿

2.ÄãÒÑÔÚÓ¦ÓóÌÐò·þÎñÆ÷Éϰ²×°ÁËDocker£¨Ö¸ÄÏ£©

3.Äã¾ßÓÐDocker¾µÏñµÄ¾µÏñÍйܣ¨ÔÚ±¾Ö¸ÄÏÖн«Ê¹ÓÃDocker Hub£©

4.ÄãÒѾ­ÔÚ·þÎñÆ÷ÉÏÉú³ÉÁËSSH RSAÃÜÔ¿£¨Ö¸ÄÏ£©

ÄãÒª´´½¨Ê²Ã´

Ä㽫´´½¨Dockerfile ºÍ.gitlab-ci.yml£¬ËüÃǽ«×Ô¶¯ÓÃÓÚ£º

1.¹¹½¨Ó¦ÓóÌÐòJarÎļþ

2.¹¹½¨Docker¾µÏñ

3.½«¾µÏñÍÆË͵½Docker´æ´¢¿â

4.ÔÚÓ¦ÓóÌÐò·þÎñÆ÷ÉÏÔËÐоµÏñ

»ù±¾ÏîÄ¿ÐÅÏ¢

±¾ÎĵÄSpring BootÓ¦ÓóÌÐòÊÇͨ¹ýSpring InitializrÉú³ÉµÄ¡£ÕâÊÇÒ»¸ö»ùÓÚJava 8»òJava11¹¹½¨µÄMavenÏîÄ¿¡£ºóÃæ£¬ÎÒÃǽ«½éÉÜJava 8ºÍJava 11¶ÔDocker¾µÏñÓÐʲôӰÏì¡£

DockerÎļþ

ÈÃÎÒÃÇ´ÓDockerfile¿ªÊ¼¡£½Å±¾ÒѾ­×¼±¸ºÃ£¬ÈçÏ£º

FROM maven:3.6.3-jdk-11-slim AS MAVEN_BUILD
#FROM maven:3.5.2-jdk-8-alpine AS MAVEN_BUILD FOR JAVA 8
ARG SPRING_ACTIVE_PROFILE
MAINTAINER Jasmin
COPY pom.xml /build/
COPY src /build/src/
WORKDIR /build/
RUN mvn clean install -Dspring.profiles.active=$SPRING_ACTIVE_PROFILE && mvn package -B -e -Dspring.profiles.active=$SPRING_ACTIVE_PROFILE
FROM openjdk:11-slim
#FROM openjdk:8-alpine FOR JAVA 8
WORKDIR /app
COPY --from=MAVEN_BUILD /build/target/appdemo-*.jar /app/appdemo.jar
ENTRYPOINT ["java", "-jar", "appdemo.jar"]

Java°æ±¾

ÈÃÎÒÃÇ´ÓDockerµÄ½Ç¶È¿´Ò»ÏÂJava 8ºÍ11Ö®¼äµÄÇø±ð¡£³¤»°¶Ì˵£ºÕâÊÇDocker¾µÏñµÄ´óСºÍ²¿Êðʱ¼ä¡£

»ùÓÚJava 8¹¹½¨µÄDocker¾µÏñ½«Ã÷ÏÔСÓÚ»ùÓÚJava 11µÄ¾µÏñ¡£ÕâÒ²Òâζ×ÅJava 8ÏîÄ¿µÄ¹¹½¨ºÍ²¿Êðʱ¼ä½«¸ü¿ì¡£

Java 8-¹¹½¨Ê±¼ä£ºÔ¼4·ÖÖÓ£¬¾µÏñ´óСΪ Ô¼180 MB

Java 11-¹¹½¨Ê±¼ä£ºÔ¼14·ÖÖÓ£¬¾µÏñ´óСԼΪ480 MB

×¢Ò⣺ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÕâЩÊý×Ö¿ÉÄÜ»áÓÐËù²»Í¬¡£

Docker¾µÏñ

ÕýÈçÔÚÇ°ÃæÊ¾ÀýÖÐÒѾ­¿´µ½µÄÄÇÑù£¬ÓÉÓÚJava°æ±¾µÄÔµ¹Ê£¬ÎÒÃÇÔÚÓ¦ÓóÌÐò¾µÏñ´óСºÍ¹¹½¨Ê±¼ä·½Ãæ´æÔÚ¾Þ´ó²îÒì¡£Æä±³ºóµÄʵ¼ÊÔ­ÒòÊÇÔÚDockerfileÖÐʹÓÃÁËDocker¾µÏñ¡£

Èç¹ûÎÒÃÇÔÙ¿´Ò»ÏÂDockerfile£¬ÄÇôJava 11¾µÏñºÜ´óµÄÕæÕýÔ­ÒòÊÇÒòΪËü°üº¬ÁËûÓо­¹ýÑéÖ¤/²âÊÔµÄopen-jdk:11¾µÏñµÄAlpine°æ±¾¡£

Èç¹ûÄã²»ÊìϤOpenJDK¾µÏñ°æ±¾£¬½¨ÒéÄãÔĶÁOpenJDK Docker¹Ù·½Îĵµ¡£ÔÚÕâÀÄã¿ÉÒÔÕÒµ½ÓйØÃ¿¸öOpenJDK°æ±¾µÄ¾µÏñµÄ˵Ã÷¡£

ÔÚENTRYPOINT ÖУ¬Óë»·¾³Ïà¹ØµÄÊôÐÔ£¬ÎÒÃÇÖ»ÄÜдËÀ£¬ÈçÏ£º

ENTRYPOINT [ ¡° java¡±£¬¡° -Dspring.profiles.active = development¡±£¬¡° -jar¡±£¬¡° appdemo.jar¡± ]

ΪÁËʹËü¶¯Ì¬£¬ÄãÏ£Íû½«Æä¼òµ¥µØ×ª»»Îª£º

ENTRYPOINT [ ¡° java¡±£¬¡° -Dspring.profiles.active = $ SPRINT_ACTIVE_PROFILE¡±£¬¡° -jar¡±£¬¡° appdemo.jar¡± ]

ÒÔǰ£¬ÕâÊDz»¿ÉÄܵ쬵«ÊÇÐÒÔ˵ÄÊÇ£¬Õ⽫ÔÚ.gitlab-ci.ymlÖÐͨ¹ý ARG SPRING_ACTIVE_PROFILEÐÞ¸´¡£

gitlab-ci.yml

ÔÚ±àд´ËÎļþ֮ǰ£¬Òª×¼±¸µÄ¶«Î÷ºÜÉÙ¡£»ù±¾ÉÏ£¬ÎÒÃÇÏëҪʵÏÖµÄÊÇ£¬Ö»ÒªÍÆËÍ´úÂ룬¾Í»áÔÚÏàÓ¦µÄ»·¾³ÉÏ×Ô¶¯²¿Êð¡£

´´½¨.envÎļþºÍ·ÖÖ§

ÎÒÃÇÊ×ÏÈÐèÒª´´½¨°üº¬Óë»·¾³Ïà¹ØµÄ·ÖÖ§ºÍ.envÎļþ¡£Ã¿¸ö·Ö֧ʵ¼ÊÉÏ´ú±íÎÒÃǵÄÓ¦ÓóÌÐò½«ÔËÐеĻ·¾³¡£

ÎÒÃǽ«ÔÚÈý¸ö²»Í¬µÄ»·¾³Öв¿ÊðÎÒÃǵÄÓ¦ÓóÌÐò£º¿ª·¢£¬²âÊÔºÍÉú²ú£¨ development, QA, and production £©¡£ÕâÒâζ×ÅÎÒÃÇÐèÒª´´½¨Èý¸ö·ÖÖ§¡£

ÎÒÃǵÄdev£¬QAºÍprodÓ¦ÓóÌÐò½«ÔÚ²»Í¬µÄ·þÎñÆ÷ÉÏÔËÐУ¬²¢ÇÒ½«¾ßÓв»Í¬µÄDockerÈÝÆ÷±êÇ©£¬¶Ë¿ÚºÍSSHÃÜÔ¿¡£Õâ¾ÍÒªÇóÎÒÃǵÄgitlab-ci.ymlÎļþ½«ÒªÊǶ¯Ì¬µÄ£¬Í¨¹ýΪÎÒÃÇÓµÓеÄÿ¸ö»·¾³´´½¨.envÎļþÀ´½â¾ö¸ÃÎÊÌâ¡£

.develop.env .qa.env .master.env

ÖØÒªËµÃ÷£ºÃüÃûÕâЩÎļþʱ£¬ÓÐÒ»¸ö¼òµ¥µÄ¹æÔò£ºÊ¹ÓÃGitLab·ÖÖ§À´ÃüÃû£¬Òò´ËÎļþÃûÓ¦ÈçÏÂËùʾ£º¡£$ BRANCH_NAME.env

ÀýÈ磬ÕâÊÇ.develop.envÎļþ¡£

export SPRING_ACTIVE_PROFILE='development'
export DOCKER_REPO='username/demo_app:dev'
export APP_NAME='demo_app_dev'
export PORT='8080'
export SERVER_IP='000.11.222.33'
export SERVER_SSH_KEY="$DEV_SSH_PRIVATE_KEY"

Óë.envÎļþÓйصÄÖØÒªËµÃ÷

SPRING_ACTIVE_PROFILE£º²»ÑÔ×ÔÃ÷£¬ÎÒÃÇҪʹÓÃÄÄЩSpringÓ¦ÓóÌÐòÊôÐÔ¡£DOCKER_REPO£ºÕâÊÇDocker¾µÏñµÄ´æ´¢¿â£»ÔÚÕâÀÎÒÃÇΨһÐèҪעÒâµÄÊÇDocker image TAG£¬¶ÔÓÚÿÖÖ»·¾³£¬ÎÒÃǽ«Ê¹Óò»Í¬µÄ±êÇ©£¬ÕâÒâζ×ÅÎÒÃǽ«Ê¹ÓÃdev£¬qa ºÍprod ±êÇ©¡£

ÎÒÃǵÄDockerÖÐÐÄ¿´ÆðÀ´ÏñÕâÑù¡£

ÈçÄãËù¼û£¬´æÔÚÒ»¸ö´øÓÐÈý¸ö²»Í¬±êÇ©µÄ´æ´¢¿â£¬Ã¿µ±½«´úÂëÍÆË͵½GitLab·ÖÖ§ÉÏʱ£¬Ã¿¸ö±êÇ©£¨Ó¦ÓóÌÐò°æ±¾£©¶¼»á±»¸üС£

APP_NAME£º´ËÊôÐԷdz£ÖØÒª£¬ËüÊǶÔÈÝÆ÷µÄÃüÃû¡£Èç¹ûÄãδÉèÖôËÊôÐÔ£¬ÔòDocker½«ÎªÄãµÄÈÝÆ÷Ëæ»úÃüÃû¡£Õâ¿ÉÄÜÊÇÒ»¸öÎÊÌ⣬ÒòΪÄ㽫ÎÞ·¨ÒԸɾ»µÄ·½Ê½Í£Ö¹ÔËÐÐÈÝÆ÷¡£

¶Ë¿Ú£ºÕâÊÇÎÒÃÇÏ£ÍûÔËÐÐDockerÈÝÆ÷µÄ¶Ë¿Ú¡£

SERVER_IP£ºÓ¦ÓóÌÐòʹÓõķþÎñÆ÷IP¡£Í¨³££¬Ã¿¸ö»·¾³¶¼½«Î»ÓÚ²»Í¬µÄ·þÎñÆ÷ÉÏ¡£

SERVER_SSH_KEY£ºÕâÊÇÎÒÃÇÒѾ­ÔÚÿ̨·þÎñÆ÷ÉÏÉú³ÉµÄSSHÃÜÔ¿¡£$DEV_SSH_PRIVATE_KEY

ʵ¼ÊÉÏÊÇÀ´×ÔGitLab´æ´¢¿âµÄ±äÁ¿¡£

´´½¨GitLab±äÁ¿

×îºóÐèÒª×öµÄÊÇ´´½¨GitLab±äÁ¿¡£

´ò¿ªÄãµÄGitLab´æ´¢¿â£¬È»ºóתµ½£ºSettings -> CI/CD¡£ÔÚ Variables²¿·ÖÖУ¬ Ìí¼ÓбäÁ¿£º

DOCKER_USER£ºÓÃÓÚ·ÃÎÊDocker Hub»òÆäËû¾µÏñÍйܵÄÓû§Ãû

DOCKER_PASSWORD£ºÓÃÓÚ·ÃÎʾµÏñÍйܵÄÃÜÂë

$ ENV_SSH_PRIVATE_KEY£ºÏÈǰÔÚ·þÎñÆ÷ÉÏÉú³ÉµÄSSH˽Կ¡£

SSH KEYµÄÖØÒªËµÃ÷

ÄãÐèÒª¸´ÖÆÍêÕûµÄÃÜÔ¿Öµ£¬°üÀ¨£º----- BEGIN RSA PRIVATE KEY -----ºÍ----- END RSA PRIVATE KEY -----

×îºó£¬ÄãµÄGitLab±äÁ¿Ó¦ÈçÏÂËùʾ¡£

´´½¨gitlab-ci.ymlÎļþ

acos½éÉÜ\54.png)services:
- docker:19.03.7-dind
stages:
- build jar
- build and push docker image
- deploy
build:
image: maven:3.6.3-jdk-11-slim
stage: build jar
before_script:
- source .${CI_COMMIT_REF_NAME}.env
script:
- mvn clean install -Dspring.profiles.active=$SPRING_ACTIVE_PROFILE && mvn package -B -e -Dspring.profiles.active=$SPRING_ACTIVE_PROFILE
artifacts:
paths:
- target/*.jar
docker build:
image: docker:stable
stage: build and push docker image
before_script:
- source .${CI_COMMIT_REF_NAME}.env
script:
- docker build --build-arg SPRING_ACTIVE_PROFILE=$SPRING_ACTIVE_PROFILE -t $DOCKER_REPO .
- docker login -u $DOCKER_USER -p $DOCKER_PASSWORD docker.io
- docker push $DOCKER_REPO
deploy:
image: ubuntu:latest
stage: deploy
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config
- source .${CI_COMMIT_REF_NAME}.env
script:
- ssh root@$SERVER "docker login -u $DOCKER_USER -p $DOCKER_PASSWORD docker.io; docker stop $APP_NAME; docker system prune -a -f; docker pull $DOCKER_REPO; docker container run -d --name $APP_NAME -p $PORT:8080 -e SPRING_PROFILES_ACTIVE=$SPRING_ACTIVE_PROFILE $DOCKER_REPO; docker logout"

ÈÃÎÒÃǽâÊÍÒ»ÏÂÕâÀï·¢ÉúÁËʲô£º

services:
- docker:19.03.7-dind

ÕâÊÇÒ»Ïî·þÎñ£¬Ê¹ÎÒÃÇ¿ÉÒÔÔÚDockerÖÐʹÓÃDocker¡£ÔÚDockerÖÐÔËÐÐDockerͨ³£²»ÊÇÒ»¸öºÃÖ÷Ò⣬µ«ÊǶÔÓÚ´ËÓÃÀýÀ´Ëµ£¬ÕâÊÇÍêÈ«¿ÉÒԵģ¬ÒòΪÎÒÃǽ«¹¹½¨¾µÏñ²¢½«ÆäÍÆË͵½´æ´¢¿âÖС£

stages:
- build jar
- build and push docker image
- deploy

¶ÔÓÚÿ¸ögitlab-ci.ymlÎļþ£¬±ØÐëÊ×Ïȶ¨ÒåÖ´Ðв½Öè¡£½Å±¾½«°´ÕÕ²½Ö趨ÒåµÄ˳ÐòÖ´ÐС£

ÔÚÿ¸ö²½Ö裬ÎÒÃǶ¼±ØÐëÌí¼ÓÒÔϲ¿·Ö£ºbefore_script: - source .${CI_COMMIT_REF_NAME}.env

ÕâÖ»ÊÇÔ¤ÏȼÓÔØÖ®Ç°´´½¨µÄ env. files, Îļþ¡£¸ù¾ÝÕýÔÚÔËÐеķÖÖ§À´×Ô¶¯×¢Èë±äÁ¿¡££¨Õâ¾ÍÊÇΪʲôÎÒÃDZØÐëʹÓ÷ÖÖ§Ãû³ÆÀ´ÃüÃû.envÎļþµÄÔ­Òò£©

ÕâЩÊÇÎÒÃDz¿Êð¹ý³ÌÖеÄÖ´Ðв½Öè¡£

ÈçÄãËù¼û£¬£¬ÓÐÈý¸ö´øÓÐÂÌÉ«¸´Ñ¡±ê¼ÇµÄԲȦ£¬Õâ±íʾËùÓв½Öè¾ùÒѳɹ¦Ö´ÐС£

build:
image: maven:3.6.3-jdk-11-slim
stage: build jar
before_script:
- source .${CI_COMMIT_REF_NAME}.env
script:
- mvn clean install -Dspring.profiles.active=$SPRING_ACTIVE_PROFILE && mvn package -B -e -Dspring.profiles.active=$SPRING_ACTIVE_PROFILE
artifacts:
paths:
- target/*.jar

ÕâÊÇÖ´ÐеÚÒ»²½Öè´úÂëµÄÒ»²¿·Ö£¬¹¹½¨ÁËÒ»¸öjarÎļþ£¬¸ÃÎļþ¿ÉÒÔÏÂÔØ¡£Õâʵ¼ÊÉÏÊÇÒ»¸ö¿ÉÑ¡²½Ö裬½öÓÃÓÚÑÝʾ¹¹½¨jar²¢´ÓGitLabÏÂÔØËüÊǶàôÈÝÒס£

µÚ¶þ²½ÖèÊÇÔÚDocker´æ´¢¿âÖй¹½¨²¢ÍÆËÍDocker¾µÏñ¡£

docker build:
image: docker:stable
stage: build and push docker image
before_script:
- source .${CI_COMMIT_REF_NAME}.env
script:
- docker build --build-arg SPRING_ACTIVE_PROFILE=$SPRING_ACTIVE_PROFILE -t $DOCKER_REPO .
- docker login -u $DOCKER_USER -p $DOCKER_PASSWORD docker.io
- docker push $DOCKER_REPO

ÕâÒ»²½Ö裬ÎÒÃDz»µÃ²»Ê¹ÓÃdocker:19.03.7-dind·þÎñ¡£ÈçÄãËù¼û£¬ÎÒÃÇʹÓõÄÊÇ×îеÄÎȶ¨°æ±¾µÄDocker£¬ÎÒÃÇÖ»ÊÇÔÚΪÊʵ±µÄ»·¾³¹¹½¨¾µÏñ£¬È»ºó¶ÔDockerhub½øÐÐÉí·ÝÑéÖ¤²¢ÍÆË;µÏñ¡£

ÎÒÃǽű¾µÄ×îºóÒ»²¿·ÖÊÇ£º

deploy:
image: ubuntu:latest
stage: deploy
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config
- source .${CI_COMMIT_REF_NAME}.env
script:
- ssh root@$SERVER "docker stop $APP_NAME; docker system prune -a -f; docker pull $DOCKER_REPO; docker container run -d --name $APP_NAME -p $PORT:8080 -e SPRING_PROFILES_ACTIVE=$SPRING_ACTIVE_PROFILE $DOCKER_REPO"

Ôڴ˲½ÖèÖУ¬ÎÒÃÇʹÓÃUbuntu Docker¾µÏñ£¬Òò´ËÎÒÃÇ¿ÉÒÔSSHµ½ÎÒÃǵÄÓ¦ÓóÌÐò·þÎñÆ÷²¢ÔËÐÐһЩDockerÃüÁî¡£ÆäÖеIJ¿·Ö´úÂë before_script´ó²¿·ÖÀ´×Ô¹Ù·½Îĵµ£¬µ«ÊÇ£¬µ±È»£¬ÎÒÃÇ¿ÉÒÔ¶ÔÆä½øÐÐһЩµ÷ÕûÒÔÂú×ãÎÒÃǵÄÐèÇó¡£Îª²»¶Ô˽Կ½øÐÐÑéÖ¤£¬Ìí¼ÓÁËÒÔÏ´úÂëÐУº

- echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config

ÄãÒ²¿ÉÒԲο¼Ö¸ÄÏÑé֤˽Կ¡£ÈçÄãÔÚ×îºó½×¶ÎµÄ½Å±¾²¿·ÖÖÐËù¼û£¬ÎÒÃÇÕýÔÚÖ´ÐÐһЩDockerÃüÁî¡£

Í£Ö¹ÕýÔÚÔËÐеÄDockerÈÝÆ÷£ºdocker stop $APP_NAME¡££¨Õâ¾ÍÊÇÎÒÃÇÒªÔÚ.envÎļþÖж¨ÒåAPP_NAMEµÄÔ­Òò £©

ɾ³ýËùÓÐδÔËÐеÄDocker¾µÏñ docker system prune -a -f¡£Õâʵ¼ÊÉϲ»ÊÇÇ¿ÖÆÐԵ쬵«ÎÒÏëɾ³ý·þÎñÆ÷ÉÏËùÓÐδʹÓõľµÏñ¡£

À­È¡×îа汾µÄDocker¾µÏñ£¨¸Ã¾µÏñÊÇÔÚÉÏÒ»¸ö½×¶ÎÖй¹½¨²¢ÍÆË͵ģ©¡£

×îºó£¬Ê¹ÓÃÒÔÏÂÃüÁîÔËÐÐDocker¾µÏñ£º

docker container run -d --name $APP_NAME -p $PORT:8080 -e SPRING_PROFILES_ACTIVE=$SPRING_ACTIVE_PROFILE $DOCKER_REPO
   
1907 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ