創建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>