Springboot【2.x】+ Maven遠程部署到Linux的Docker中

序言

隨着阿里中臺概念的提出,大大小小的互聯網公司都對原有項目技術架構進行改造、優化、升級,其中使用最多的莫過於微服務、容器以及雲服務。我司綜合考慮將來業務發展決定項目逐步雲化、容器化,下面就基於springboot+maven項目遠程部署到docker中進行分享下,但願能給大夥兒有些幫助。html

系統及軟件環境

  • Linux操做系統CentOS7(建議)
  • Docker(社區版)---官方地址

Docker RemoteApi

遠程部署前提須要開啓docker遠程訪問功能,下面介紹經常使用兩個操做系統的配置java

  • CentOS 6 修改/etc/sysconfig/docker文件,重啓後生效(service docker restart)
DOCKER_OPTS="-H=unix:///var/run/docker.sock -H=0.0.0.0:2375"
複製代碼
  • CentOS 7 修改/usr/lib/systemd/system/docker.service文件,在ExecStart後面添加一行
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock
複製代碼

效果截圖linux

dockerConfig

重啓服務git

systemctl daemon-reload    
  systemctl restart docker.service 
複製代碼

dockerInfo

項目建立與訪問

打開intelliJ -> New Project -> Spring Assistant(Spring Initializr Server) -> 工程名(mvhello) -> 點擊完成,項目結構以下github

mavenProject

在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
複製代碼

bootBrower

配置DockerFile

確保項目能正常訪問後,在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
複製代碼

配置Maven中docker依賴

在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
複製代碼

dockerSuccess

看到執行成功後,遠程登陸80.200的服務,看下docker鏡像

dockerSuccess

文獻參考

【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)

相關文章
相關標籤/搜索