2017-01-17 16 views
1

私のSpringBootアプリケーションはEclipse IDEでうまく動作しますが、Docker Containerでアプリケーションを実行すると画像がうまく構築されますが、画像を実行するとClassDefnotfoundと組み込みコンテナを開始できません。NoClassDefFoundErrorのため埋め込みコンテナを起動できません

How can I fix it?` 

In Dockerfile 
FROM java:8 
EXPOSE 8080 
ADD /target/docker.ras.jar docker.ras.jar 
RUN sh -c 'touch /docker.ras.jar 
ENTRYPOINT ["java","-jar","docker.ras.jar"] 

    In pom.xml i also use maven plugin 
<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> 

    <groupId>example.docker.ras</groupId> 
    <artifactId>docker.ras</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
     <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.3.RELEASE</version> 
     </parent> 
    <name>docker.ras</name> 
    <url>http://maven.apache.org</url> 
    <properties> 

    <java.version>1.8</java.version> 
    <start-class>docker.ras.App</start-class> 
    <docker.image.prefix>springio</docker.image.prefix> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 

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

     </dependency> 
     <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-devtools</artifactId> 
    <version>1.3.0.RELEASE</version> 
      </dependency> 


     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-core</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
</dependency> 

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 

</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jsp-api</artifactId> 
    <version>2.0</version> 
    <scope>compile</scope> 
</dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 

    <plugins> 
      <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <executions> 
        <execution> 
         <goals> 
          <goal>repackage</goal> 
         </goals> 
        </execution> 
       </executions> 
     </plugin> 

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

    <finalName>docker.ras</finalName> 
    </build> 
    </project> 

My Error Stack trace

+0

を見て?この情報であなたの質問を修正してください。 –

+0

ドッカーツールで次のコマンドを実行しました。 1.mvn install 2.ドッカービルド-f Dockerfile -t docker.ras。 3.ドッキング・イメージ 4.ドッキング・ラン-p 8080:8080ドッカー.ras – Rashmi

+0

例外の全文を表示してください。 – sphinks

答えて

0

ドッカーコンテナでのJavaのバージョンを確認してください。 あなたはアーティファクトの後にアプリを実行していることを願っています。それがすべての依存関係を追加していることを確認してください。

0

これは、デプロイメントにサーバー固有のAPIが含まれているか、サーブレットAPIのバージョンが間違っていることです。私は前者と思われる。

mavenを使用している場合、サーブレットのapiのスコープはpomで指定されています。

はまた、あなたがドッカーのためのアプリケーション・イメージ(パッケージ)をビルドするにはどうすればよい

http://tomcat.apache.org/whichversion.html

関連する問題