Docker Spring boot 項目使用 docker-maven-plugin 執行mvn docker:build 打成鏡像


創建Dockerfile文件

 

此處的參數說明:

FROM openjdk:8-jdk-alpine  基與jdk1.8
VOLUME /tmp   掛載容器的位置, 容易找到
ADD kitty-generator-1.0.0.jar app.jar   宿主機器的jar文件 移動到 容器的jar文件 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]  容器執行的命令

EXPOSE 9000 簡易爆漏的端口 下面docker run -p 還是要的, 因為容器是橋接模式
EXPOSE 9092 寫多個就會暴露多個端口

若要執行調優內存:加參數如下

 

 
        

 

2:POM.xml配置 加入docker:build插件

 <artifactId>kitty-generator</artifactId>  此處和下面${project.artifactId} 對應
<version>${project.version}</version>
<packaging>jar</packaging> 此處改為jar包方式
<properties>
   *****
<docker.image.prefix>kitty</docker.image.prefix> 此處和下面${docker.image.prefix} 對應
</properties>

#下面為jar方式.
    <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- Docker maven plugin --> <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> </plugins>

 

在父模塊打包

mvn clean install package -Dmaven.test.skip  

 

在子模塊執行生成鏡像

mvn docker:build -Dmaven.test.skip

 

啟動鏡像

docker run -itd -p 9000:9000 -v /data/generator/:/data kitty/kitty-generator

 -it  可以交互進入容器

-d   后台運行

-p 端口映射,若項目有多個端口,  -p 9000:9000 -p 9092:9092 寫多個即可

-v 掛載文件 宿主/data/generator/ 不存在會自動創建   容器/data會自動創建

 

掛載文件配置 

   * 注意下方/data/ 紅色字體

-v /data/generator/:/data  這的/data 表示容器的日志 將會在宿主機器生成/data/generator/kitty-generator.log文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- ch.qos.logback.core.ConsoleAppender 控制台輸出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志輸出 -->
    <appender name="baselog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/data/kitty-generator.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/base.%d.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100 MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>
                [%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
            </pattern>
            <charset>UTF-8</charset> <!-- 此處設置字符集 -->
        </encoder>
    </appender>
    <!-- 日志級別 -->
    <root>
        <!-- 定義了ERROR和INFO級別的日志;分別在FILE文件和控制台輸出 -->
        <level value="INFO" />
        <appender-ref ref="baselog" />
        <appender-ref ref="console" />
    </root>
    <logger name="com.louis.kitty.generator" level="INFO">
        <appender-ref ref="baselog" />
    </logger>
</configuration>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM