1、配置倉庫java
2、建立項目linux
3、鏡像文件git
4、構建部署web
5、驗證測試spring
受篇幅限制,本文包含前三節內容,後三節內容請看《基於雲效使用Docker實現持續交付(下)》docker
阿里雲發佈了最新[雲效2020]產品。雲效提供從「需求 ->開發->測試->發佈->運維->運營」端到端的協同服務和研發工具,支持公共雲、專有云和混合雲多種部署形態,經過人工智能、自動化 技術的應用助力開發者提高研發效能,持續快速交付有效價值。apache
雲效2020產品包含多個模塊功能,例如項目協做、知識庫、流水線、代碼管理、測試環境、倉庫管理等功能。本文主要介紹使用Docker進行Java項目構建部署,涉及倉庫管理、代碼管理、流水線等功能。centos
閱讀文本前,您須要可以熟練使用Maven構建Java項目,並瞭解Docker相關的一些基礎概念及命令。app
提示:本文圖片較多,建議在wifi環境下閱讀,土豪隨意~運維
1.使用Maven構建Java項目,一般都會使用Maven私服倉庫,以供內部二方庫互相依賴及引用。這裏,咱們直接使用雲效提供的Maven私服倉庫。
2.訪問阿里雲官網,選擇[公共雲 無償使用]。
3.第一次訪問須要填寫企業名稱,並開通服務。服務開通成功後,界面以下所示
4.點擊左上角菜單按鈕,找到並點擊進入製品倉庫
5.點擊snapshot倉庫地址,能夠看到這個倉庫下目前是空的,由於還未發佈jar包到倉庫。
6.找到左上角[指南]按鈕,點擊後切換頁籤,能夠看到Maven配置指南。
7.這裏,咱們直接使用方式一,直接下載settings.xml文件,並重命名爲settings-zccoder-2020.xml,放到Maven的conf目錄下。
8.一般狀況下,還須要配置本地倉庫地址。
9.至此,Maven私服倉庫配置完成。
這裏咱們建立兩個項目demo-domain
和demo-service
,用來模擬企業內部項目二方庫互相依賴的場景。
demo-domain
用來存放一些POJO領域模型對象,單獨發佈jar包,以供其餘項目使用。
demo-service
依賴於demo-domain
,是實現業務功能的項目,下面會使用Docker來進行部署。
1.點擊左上角菜單按鈕,找到並點擊進入代碼管理
2.爲方便管理,先新建demo代碼組
1.demo代碼組新建成功後,則新建demo-domain
代碼庫
2.使用一樣的方式,新建demo-service
代碼庫。建立完成後以下
1.點擊進入demo-domain
項目,第一次須要配置SSH密鑰
2.SSH密鑰配置完成後,使用git clone
命令,將空的代碼庫下載本地
1.在建立Maven項目以前,須要設置IDE的Maven配置文件
2.建立demo-domain
項目,pom文件以下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zccoder</groupId> <artifactId>demo-domain</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> </dependency> </dependencies> <distributionManagement> <repository> <id>rdc-releases</id> <url>https://packages.aliyun.com/maven/repository/2001067-release-pF311P/</url> </repository> <snapshotRepository> <id>rdc-snapshots</id> <url>https://packages.aliyun.com/maven/repository/2001067-snapshot-MP1zHb/</url> </snapshotRepository> </distributionManagement> </project>
3.編寫User
類
package com.zccoder.demo.domain; import java.io.Serializable; import lombok.Data; import lombok.NoArgsConstructor; /** * 用戶實體 * * @author zc * @date 2020/04/30 */ @Data @NoArgsConstructor public class User implements Serializable { /** * 用戶編號 */ private Integer uid; /** * 用戶名稱 */ private String userName; }
4.執行mvn -X -Dmaven.test.skip=true clean deploy
將demo-domain
發佈到私服倉庫
5.經過日誌,可以看到成功發佈到私服倉庫,再到私服倉庫確認下,確實有了這個包
6.建立demo-service
項目,pom文件以下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> <relativePath/> </parent> <groupId>com.zccoder</groupId> <artifactId>demo-service</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency> <dependency> <groupId>com.zccoder</groupId> <artifactId>demo-domain</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> </dependencies> <build> <finalName>demo-service</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
7.編寫HelloApplication
類
package com.zccoder.demo.service; import com.zccoder.demo.domain.User; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.validation.constraints.NotNull; /** * 啓動類 * * @author zc * @date 2020/04/30 */ @RestController @RequestMapping("/hello") @SpringBootApplication public class HelloApplication { public static void main(String[] args) { SpringApplication.run(HelloApplication.class, args); } @GetMapping public String say(@NotNull User user) { return "Hello " + user.toString(); } }
8.配置application.properties
server.port=8081
9.啓動HelloApplication
,並訪問http://127.0.0.1:8081/hello?uid=1&userName=Demo
,顯示成功
10.將以前的settings-zccoder-2020.xml文件複製到demo-domain
和demo-service
項目根目錄,重命名爲settings.xml
11.最後,將demo-domain
和demo-service
代碼提交到遠程代碼庫
1.編寫基礎鏡像Dockerfile,提供JDK環境、時區等基礎環境
FROM centos:7 #安裝wget工具 RUN yum -y install wget #下載而且安裝jdk設置環境變量 COPY jdk-8u201-linux-x64.rpm jdk-8u201-linux-x64.rpm RUN rpm -ivh jdk-8u201-linux-x64.rpm ENV JAVA_HOME /usr/java/latest/ ENV PATH=$JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar RUN rm -rf jdk-8u201-linux-x64.rpm #時區中文等處理 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo 'Asia/Shanghai' >/etc/timezone RUN yum -y install kde-l10n-Chinese #配置顯示中文 RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 ENV LC_ALL zh_CN.utf8 RUN echo "export LC_ALL=zh_CN.utf8" >> /etc/profile
2.在基礎鏡像Dockerfile文件所在目錄,執行命令
docker build -t registry.cn-shenzhen.aliyuncs.com/zccoder/zccoder-jdk1.8:v1 .
3.構建好基礎鏡像,並使用下面命令推送到阿里雲容器鏡像服務
docker push registry.cn-shenzhen.aliyuncs.com/zccoder/zccoder-jdk1.8:v1
4.到阿里雲容器鏡像服務進行確認,能夠看到基礎鏡像
1.構建好基礎鏡像後,就是編寫服務層鏡像。
2.在項目根目錄建立Dockerfile文件,內容以下便可
# 依賴基礎鏡像 FROM registry.cn-shenzhen.aliyuncs.com/zccoder/zccoder-jdk1.8:v1 COPY demo-service.jar /demo-service.jar CMD ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo-service.jar"]