2017-01-23 67 views
5

適用於Java Spring Boot應用程序的Docker基礎鏡像(FROM)?用於Java Spring Boot的Docker基礎映像(`FROM`)?

我剛開始用泊塢窗,我看到FROMDockerfile可以定義圖像的Java像

FROM java:8 

如果我使用的搖籃(或Maven)建設,是更好的基礎圖像開始,以避免稍後再配置Gradle/Maven項目的常見問題?

當然春天啓動的應用程序是內部生成輸出文件夾只是.jar文件,應該如何與碼頭工人少跑問題(與標準的編譯工具,內置的Java項目)

+2

Gradle或Maven是無關緊要的,正如你在最後一段中寫到的,Spring Boot應用程序只是一個.jar,它是如何生成的並不重要。這就是使用默認Java Docker構建映像的原因。 –

回答

5

有一個很好的文件上如何彈簧引導與碼頭工人集成:https://spring.io/guides/gs/spring-boot-docker/

基本上你在src/main/docker/Dockerfile定義dockerfile和配置泊塢窗 - Maven的插件是這樣的:

<build> 
<plugins> 
    <plugin> 
     <groupId>com.spotify</groupId> 
     <artifactId>docker-maven-plugin</artifactId> 
     <version>0.4.11</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> 

Dockerfile:

FROM frolvlad/alpine-oraclejdk8:slim 
VOLUME /tmp 
ADD gs-spring-boot-docker-0.1.0.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" ] 

注意,在這個例子中是FROM frolvlad/alpine-oraclejdk8:slim其基於Linux的高山小footprinted圖像。

您還應該能夠使用標準的Java 8映像(基於Debian並且可能會增加佔用空間)。可以在這裏找到大量可用的Java Baseimages列表:https://hub.docker.com/_/java/

1

我正在使用使用基礎泊塢窗圖像fabric8/java-alpine-openjdk8-jdk:1.2的fabric插件。不需要Dockerfile,它由插件創建。

<build> 
    <finalName>${project.artifactId}-${project.version}</finalName> 
    <plugins> 

     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 

     <plugin> 
      <groupId>io.fabric8</groupId> 
      <artifactId>fabric8-maven-plugin</artifactId> 
      <version>3.2.28</version> 
     </plugin> 

    </plugins> 
</build> 
+0

你知道基地形象嗎? –

+1

@PaulVerest我已經更新了我的答案,請看看, –