This practical case explanation ——JAVA How to pass the project Docker Realize continuous deployment ( Just four simple steps ),
 Namely : Development passed git push Upload code , through Git and Jenkins coordination , Automate program deployment , release , Operation and maintenance personnel are not required to participate in the whole process .
 This is a true container level implementation , The benefits of this , It's not just efficiency , It is also a change :
 For the first time, developers are really responsible for their own code —— Finally, we can skip the O & M and testing departments , Self maintenance operation environment ( The first is testing / development environment  ).
 Difficult people won't , It's not difficult for people to meet . Through simple 4 Configurations , You can achieve continuous deployment gracefully . This article is routinely placed in the table of contents , Please enjoy . Technical idea of continuous deployment 
 Effect display 
 to configure Git and Jenkins linkage 
 to configure Jenkins Automatically update code 
 Effect graphic explanation 
FAQ
 ok , We officially begin .
1.  Technical idea of continuous deployment 
 In this case , Suppose we JAVA The name of the project is hello. The brief technical ideas are as follows .
 In this case, it is assumed that the code is hosted in git.oschina.com upper ,Jenkins and Docker 
Registry( be similar to yum source ) Each running in one Docker In container .JAVA The project itself also runs independently in a place called hello In the container of .
 The continuous deployment scheme adopted in this paper , From private Docker 
Reistry Pull code . Some flexible solutions , Put the code on the host computer , Let the container read through volume group mapping . The reason why this method is not recommended is , Split code out of container , It's against Docker Container principle of :
 This also leads to increased handling complexity . From the perspective of freight workers , The whole is the most economical . such , Only in this way can we realize the real container level migration .
 Or say , Container age , Abandon the idea of document distribution in the past , Is the right way . The last question and answer session of this article has more elaboration on this .
 Container as process . We adopt the above scheme Docker Reasons and significance of continuous deployment , That's why . Container lifecycle , Should be much shorter than virtual machines , There is a problem with the container , It should be killed immediately , Instead of trying to recover .
2.  Effect display 
 The final effect of this paper , How amazing is it ? Let's see the following demonstration .
2.1  Effect before program code update 
 We use time stamps for simplicity , Express program updates explicitly .
2.2  Submit program code updates 
 In this example , We put the timestamp of the home page from 201506181750, Change to 201506191410( See below ).
2.3  Upload new code to Git
 Perform the following operations in sequence , Enter the correct git Account password .
 so what ?
 Then you don't have to do anything . Serve a cup of tea ( If you don't like coffee ), Wait quietly for automatic deployment to occur ,  Watch a series of automatically triggered processes , Run like a robot ( Please describe later ).
 Why 3~5 minute ? Just because in this case JAVA project , Need to come from abroad download 
Maven Package , For Jenkins Call and compile JAVA. In the formal application environment , Can put Maven The source is placed in the domestic or computer room . If you just need to PHP Continuous deployment of the project , That's faster .
2.4  View the effect of code update 
 After waiting quietly for a few minutes , The new code has indeed been automatically deployed .
 that , How did all this happen ? Is it complicated ? Otherwise . Just follow these steps , It can be realized quickly .
3.  to configure Git and Jenkins linkage 
 This process is also difficult , It's not difficult for people to meet . It is mainly divided into the following three steps .
3.1 Jenkins to configure Git source 
Jenkins New project in java-app, And configure from Git Pull program code . The details are as follows :
3.2 Jenkins Configure remote build 
Jenkins Medium configuration token, For git Use when calling remotely .
3.3 Git Open hook 
 How to let Git After receiving the updated code from the user , Deliver messages and tasks to Jenkins And ? With the help of Git of hook function , Configuration is also very simple , as follows .
4.  to configure Jenkins Automatically update code 
Jekins Received at Git After the message delivered , Trigger another remote build ( To the target server ), According to the predefined task list , Perform a series of work , Rebuild containers, etc . See below for details :
 We put the most critical Shell Extract the script content .
5.  Effect graphic explanation 
 stay 2.3 In this chapter , Our operation at that time was as follows , The purpose is to Git Submit update code .
 At that time, he didn't elaborate on the subsequent events , Now that the above has made the principle clear , Then we can talk about what actually happened next .
5.1  Upload code to Git
 It seems that the whole process has been completed and smoothly exited . actually , The backstage work has just begun .
 This will trigger Git The server sends the corresponding Jenkins The server sends an operation request , This work is too fast , There's nothing to say , Let's see next Jenkins What are you doing .
5.2 Jenkins Wonderful interaction 
1)Jenkins A build task will automatically appear .
2) Let's come in at , Look at the specific operation log . yes , Accepting from Git Task of .
3) download Maven Related software packages ( The process is slow ).
4) After downloading , Start using maven BUILD  new hello Project package .
5) Then rebuild Maven container , Build new Image and Push reach Docker In private library .
6) last , Reset Docker Pull up the container . such , It's new again . ha-ha 
Technology