隨着阿里中臺概念的提出,大大小小的互聯網公司都對原有項目技術架構進行改造、優化、升級,其中使用最多的莫過於微服務、容器以及雲服務。我司綜合考慮將來業務發展決定項目逐步雲化、容器化,下面就基於springboot+maven項目遠程部署到docker中進行分享下,但願能給大夥兒有些幫助。html
遠程部署前提須要開啓docker遠程訪問功能,下面介紹經常使用兩個操做系統的配置java
DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375"
複製代碼
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
複製代碼
效果截圖linux
重啓服務git
systemctl daemon-reload
systemctl restart docker.service
複製代碼
打開intelliJ -> New Project -> Spring Assistant(Spring Initializr Server) -> 工程名(mvhello) -> 點擊完成,項目結構以下github
在src/main/kotlin 相應目錄下新建HelloControllerspring
@RestController
class HelloController {
@GetMapping("hello")
fun helloWorld() = "hello world"
}
複製代碼
在src/main/resource的application.properties裏面添加自定義端口號docker
server.port=8888
複製代碼
啓動項目,瀏覽器訪問centos
~$ mvn spring-boot:run
複製代碼
確保項目能正常訪問後,在src/main/docker文件夾下面,新建dockerfile瀏覽器
FROM openjdk:8-jdk-alpine
VOLUME /tmp ADD mvhello-0.0.1.jar app.jar # -Djava.security.egd=file:/dev/./urandom 可解決tomcat可能啓動慢的問題
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] EXPOSE 8888
複製代碼
在pom.xml中添加下面代碼塊tomcat
<plugins>
<!-- springboot 打包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- mvn clean package docker:build -Dmaven.test.skip=true -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!-- 鏡像名稱 -->
<imageName>maven-hello</imageName>
<imageTags>0.0.1</imageTags>
<!-- docker遠程服務器地址 -->
<dockerHost>http://192.168.80.200:2375</dockerHost>
<!-- Dockerfile文件存放目錄 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
複製代碼
保存後,執行如下命令
~$ mvn clean package docker:build -Dmaven.test.skip=true
複製代碼
看到執行成功後,遠程登陸80.200的服務,看下docker鏡像
【demo地址】(https://github.com/lenvonsam/mvhello.git)
【docker官網】(https://docs.docker.com)
【docker介紹】(https://www.cnblogs.com/boshen-hzb/p/6400272.html)
【kotlin介紹】(https://www.runoob.com/kotlin/kotlin-tutorial.html)