最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Docker部署打包發(fā)布springboot項目

 更新時間:2022年03月06日 16:36:10   作者:煙雨觀春柳  
本文主要介紹了使用Docker部署打包發(fā)布springboot項目,從安裝docker到多種方式打包發(fā)布,編譯,鏡像,容器等問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

從安裝docker到多種方式打包發(fā)布,編譯,鏡像,容器等問題,遇到種種問題,終于不負所望,一步步解決,本文我會比較大跨度的來說明一切解決辦法。

第一:環(huán)境

1.虛擬機安裝的centos7。

2.docker已安裝好,不會的可以參看我的docker安裝文章。

3。搞一個很簡單的springboot項目即可,先搞定發(fā)布編譯再說。

第二:開始描述從搞項目到docker發(fā)布:

1.springboot項目代碼:

層次圖:

哈哈,紅叉叉忽略就行了,我的環(huán)境問題,無所謂。

代碼:pom.xml

<?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.2.0.BUILD-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.king</groupId>
    <artifactId>springdocker</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springdocker</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!--properties節(jié)點中設置docker鏡像的前綴“springboot”-->  
        <docker.image.prefix>springdemo</docker.image.prefix>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- tag::plugin[] -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.3</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>
    <!-- end::plugin[] -->
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>

</project>

2:Dockerfile文件

FROM java:8
VOLUME /tmp
ADD springdocker-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

文件解釋:

VOLUME指定了臨時文件目錄為/tmp。其效果是在主機/var/lib/docker目錄下創(chuàng)建了一個臨時文件,并鏈接到容器的/tmp。改步驟是可選的,
如果涉及到文件系統(tǒng)的應用就很有必要了。/tmp目錄用來持久化到 Docker 數據文件夾,因為 Spring Boot 使用的內嵌 Tomcat 容器默認使用/tmp作為工作目錄
項目的 jar 文件作為 “app.jar” 添加到容器的
ENTRYPOINT執(zhí)行項目 app.jar。為了縮短Tomcat 啟動時間,添加一個系統(tǒng)屬性指向 “/dev/urandom” 作為 Entropy Source

3:其余代碼:

package com.king.springdocker.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value="/demo")
public class helloController {
@RequestMapping(value="/hello")
public String hello() {
    return "hello king!!!!!!";
}
}

========applicationProperties========
server.port=80
server.servlet.context-path=/king

=============================
package com.king.springdocker;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringdockerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringdockerApplication.class, args);
    }

}
=====================================

第三:

1.xhell進入服務器,我是在/home/下創(chuàng)建文件夾king,本地用開發(fā)工具將項目打包,將所打jar包和Dockerfile,放入king目錄下。如圖所示:

2.執(zhí)行如下命令:

docker build -t hellodocker .
命令解釋:hellodocker名字隨你喜歡,鏡像名自己起,-t就是代表要構建的鏡像tag。
不要忘記點,點是代表是在當前目錄,也就是現(xiàn)在Dockerfile文件所在的目錄。

[root@localhost king]# docker build -t hellodocker .
Sending build context to Docker daemon  17.36MB
Step 1/6 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/6 : VOLUME /tmp
 ---> Running in a6293dd37995
Removing intermediate container a6293dd37995
 ---> 08f10f02092e
Step 3/6 : ADD springdocker-0.0.1-SNAPSHOT.jar app.jar
 ---> c4eaf809b297
Step 4/6 : RUN sh -c 'touch /app.jar'
 ---> Running in 6c8a30b4220f
Removing intermediate container 6c8a30b4220f
 ---> dba5ee5d2d27
Step 5/6 : ENV JAVA_OPTS=""
 ---> Running in 25f5b705eb27
Removing intermediate container 25f5b705eb27
 ---> e1982350619d
Step 6/6 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
 ---> Running in f98b4cc2f63b
Removing intermediate container f98b4cc2f63b
 ---> 1d881201c9c5
Successfully built 1d881201c9c5
Successfully tagged hellodocker:latest

3.docker images,查看如下圖:

hellodocker成功出現(xiàn)?,F(xiàn)在開始執(zhí)行,打開瀏覽器,ip端口地址訪問,哎呦喂,不行哦,看下咋回事。

發(fā)現(xiàn)原來是我開啟的是80端口,所以說網上各種教程例子,看多了容易照搬,還是自己思考好。

改為:docker run -d -p 80:80 hellodocker。

嗯,重新訪問地址,好,搞定,成功打印:hello king!!!!!!

第四:各種錯誤教訓集合。

之前網上找資料,這個博客,那個博客,結果呢,不是這種就是那種錯,哎,也怨不得別人,誰能說那么詳細呢。總結下:

錯誤一:Dockerfile文件為:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD springdocker-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

報錯如下:

Sending build context to Docker daemon  17.36MB
Step 1/6 : FROM frolvlad/alpine-oraclejdk8:slim
pull access denied for frolvlad/alpine-oraclejdk8, repository does not exist or may require 'docker login'

也是無語了,F(xiàn)ROM換了好多沒搞定,又是搞各種鏡像,又是配置的,最后反正是改為:FROM java:8,搞定了,這個呢,看下docker命令介紹,好好理解下用法:

docker概念

  1、docker:最早是dotCloud公司出品的一套容器管理工具,但后來Docker慢慢火起來了,連公司名字都從dotCloud改成Docker。

  2、dockerfile:它是Docker鏡像的描述文件,可以理解成火箭發(fā)射的A、B、C、D……的步驟。

  3、docker鏡像:通過Dockerfile做出來的,包含操作系統(tǒng)基礎文件和軟件運行環(huán)境,它使用分層的存儲方式。

  4、docker容器:是運行起來的鏡像,簡單理解,Docker鏡像相當于程序,容器相當于進程。

dockerfile指令

  Dockerfile由多條指令組成,每條指令在編譯鏡像時執(zhí)行相應的程序完成某些功能,由指令+參數組成,以逗號分隔,#作為注釋起始符,雖說指令不區(qū)分大小寫,但是一般指令使用大些,參數使用小寫

錯誤2:

之前還用過將項目整體放到服務器,然后用命令:mvn package docker:build,去打包編譯,結果報錯,其實也是由于Dockerfile的from來源不對。報錯如下:

 到此這篇關于使用Docker部署打包發(fā)布springboot項目的文章就介紹到這了,更多相關Docker部署打包發(fā)布springboot內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker部署Go項目發(fā)布鏡像到倉庫

    Docker部署Go項目發(fā)布鏡像到倉庫

    這篇文章主要為大家介紹了Docker部署Go項目發(fā)布鏡像到倉庫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 解決docker指定udp端口號的問題

    解決docker指定udp端口號的問題

    這篇文章主要介紹了解決docker指定udp端口號的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解Docker中VLAN網絡模式的配置

    詳解Docker中VLAN網絡模式的配置

    在Docker應用到生產環(huán)境的時候包括了原生Bridge NAT模式、LinuxBridge VLAN模式以及利用第三方的網絡方案這三種,這篇文章給大家詳細介紹了Docker中VLAN網絡模式的配置,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • docker-compose安裝RabbitMQ及插件操作步驟

    docker-compose安裝RabbitMQ及插件操作步驟

    這篇文章主要為大家介紹了docker-compose安裝RabbitMQ及插件操作步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 在docker中的mysql容器內執(zhí)行命令與執(zhí)行SQL文件方式

    在docker中的mysql容器內執(zhí)行命令與執(zhí)行SQL文件方式

    文章介紹了如何通過Docker進入MySQL容器執(zhí)行SQL文件,并總結了MySQL清空表數據的三種方法:TRUNCATE、DROP和DELETE,每種方法都有其適用場景和特點
    2025-01-01
  • Dockerfile常用命令的使用簡介

    Dockerfile常用命令的使用簡介

    這篇文章主要介紹了Dockerfile常用命令的使用簡介,幫助大家更好的理解和學習使用Docker,感興趣的朋友可以了解下
    2021-04-04
  • 生產環(huán)境中安全運行Docker容器

    生產環(huán)境中安全運行Docker容器

    本文是一篇譯文,給大家詳細介紹如何在生產環(huán)境中安全運行Docker容器,有需要的小伙伴可以參考下
    2017-01-01
  • docker搭建devops(騰訊云輕量應用服務器)教程

    docker搭建devops(騰訊云輕量應用服務器)教程

    這篇文章主要為大家介紹了docker搭建devops(騰訊云輕量應用服務器)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • python腳本在docker上運行的方法

    python腳本在docker上運行的方法

    在本篇文章里小編給各位分享的是關于python腳本在docker上運行的方法內容,有需要的朋友們可以學習下。
    2020-03-03
  • Docker容器編排實現(xiàn)過程解析

    Docker容器編排實現(xiàn)過程解析

    這篇文章主要介紹了Docker容器編排實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10

最新評論

庆阳市| 修水县| 洪江市| 临朐县| 金秀| 甘南县| 高陵县| 东乌| 文安县| 青田县| 新干县| 肥东县| 永宁县| 武山县| 博乐市| 北票市| 峡江县| 大厂| 万宁市| 皮山县| 容城县| 常熟市| 塔城市| 沭阳县| 比如县| 汨罗市| 佳木斯市| 洛浦县| 连云港市| 来宾市| 南陵县| 二连浩特市| 瑞安市| 分宜县| 上林县| 莱西市| 永吉县| 东兰县| 探索| 晋江市| 茶陵县|