Spring Boot實戰-docker部署項目

由於Spring Boot默認集成了Tomcat,因此啓動一個Spring Boot項目非常的簡單,部署的時候也可以直接打成jar包使用java -jar命令部署。但是在生產環境下直接使用jar包部署會帶來一些問題,比如只有一臺服務器但是又想搞集羣,再比如項目想要往自動化運維方向發展,這個時候就不得不把docker技術提上日程了。

  • 想要Spring Boot使用docker部署的話,首先需要在pom.xml中加入docker插件,在build節點下新增插件:
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

其中的${docker.image.prefix}需要我們在pom.xml中的properties節點中定義,用於作爲docker鏡像的名字。

  • 之後需要配置docker打包的配置文件Dockerfile,在項目main文件夾下新建docker文件夾(也就是上面dockerDirectory路徑),新建Dockerfile文件:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD demo.jar app.jar
RUN sh -c 'touch /app.jar'
RUN echo "Asia/Shanghai" > /etc/timezone;
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar" ]

其中的demo爲打出的jar包的名字,也就是pom.xml中配置的finalName

  • 接下來在服務器安裝docker:
    yum -y install docker-io
  • 啓動docker:
    service docker start
  • 上傳項目到服務器,或者直接在服務器上用git/svn下載代碼
  • 使用docker打包項目:
    mvn clean package docker:build
    打包完成之後,使用docker命令docker images查看所有鏡像,可以看到我們剛剛打好的鏡像。
  • 運行鏡像:
    docker run -p xxxx:xxxx -t image-name
    使用命令運行鏡像,也就部署完成了。
  • 查看日誌:
    docker logs -f image-name
    其中的image-name爲jar包的名字,也就是pom.xml中配置的finalName
    這樣就把docker集成到Spring Boot中了,爲我們的DevOps邁出了一大步~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章