當下web服務端開發中最火的名詞中絕對有微服務的一席之地,其也成爲當下互聯網後端服務架構演進歷程中最閃亮的技術之一。微服務的基本思想在於考慮圍繞着業務領域組件來建立應用,這些應用可獨立地進行開發、管理和加速。在分散的組件中使用微服務雲架構和平臺,使部署、管理和服務功能交付變得更加簡單。既然服務被分割和微小化了,咱們很容易想到若是將其和docker結合,讓docker承載着一個個的微服務運行,如此一來將會讓服務間耦合度下降,部署簡潔,同時系統的架構也更加清晰,便於長期演進,基於此想法有了這篇文章的入門實踐!java
注: 本文首發於 My 公衆號 CodeSheep ,可 長按 或 掃描 下面的 當心心 來訂閱 ↓ ↓ ↓
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
Hello Docker!
的問好!@RestController public class DockerDemoSpringApplication { public static void main(String[] args) { SpringApplication.run(DockerDemoSpringApplication.class, args); } @RequestMapping("/hello") public String hello(){ return "Hello! Docker!」; } }
咱們在Spring Bt項目的根目錄下創建Dockerfile,用起來完成Docker鏡像構建的編排:web
FROM maven:3.3.3 ADD pom.xml /tmp/build/ RUN cd /tmp/build && mvn -q dependency:resolve ADD src /tmp/build/src #構建應用 RUN cd /tmp/build && mvn -q -DskipTests=true package \ #拷貝編譯結果到指定目錄 && mv target/*.jar /app.jar \ #清理編譯痕跡 && cd / && rm -rf /tmp/build VOLUME /tmp EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar」]
docker build -t springindocker .
spring
docker run -d -p 8080:8080 springindocker
http://127.0.0.1:8080
就能夠看到web服務器裏返回的Hello Docker!!!
問好的字符了至此就說明你成功將一個基於 Spring Boot 的應用 Docker 化了。docker
本文雖然只是以一個Demo,但一個大型的web項目無非也就是由諸多這種Rest服務,外加各類基礎設施、數據庫、通訊、中間件以及調度來構成,每一個子元素的開發也依然遵循這裏的基本流程。
做者更多的SpringBt實踐文章在此:數據庫
若是有興趣,也能夠抽點時間看看做者一些關於容器化、微服務化方面的文章:編程