1. ホーム
  2. java

[解決済み] Error.の対処方法 jarfile にアクセスできません - docker

2022-02-16 19:02:04

質問

私はDockerの初心者なのですが、以下のことに苦労しています。 "エラー。jar ファイル target/nbd.jar" にアクセスできません。 . 私のアプリケーションは、Springbootで作られたcassandraクラスタのCRUD apiです。私は、以下を実行しようとしています。 docker-compose up . すべてのcassandraノードは実行されていますが、私のAPIにのみ問題があります。私は問題がDockerfileにあると思うが、私はそれを自分で解決する方法がわからない/さまざまなことを試したが、どれもうまくいかなかった。

これが私のDockerfileです。

FROM maven:3.6.0-jdk-11-slim 
ARG JAR_FILE
COPY target/${JAR_FILE} target/nbd.jar
ENTRYPOINT ["java","-jar","nbd.jar"]

私のファイルシステム(dockerとターゲットファイル以外はカットしています)。

├── docker
│   ├── docker-compose.yaml
│   └── Dockerfile
(...)
├── src
│   ├── (...)                 
├── stop_all.sh
└── target
    ├── classes
    │   (...)
    ├── generated-sources
    │   └── annotations
    ├── generated-test-sources
    │   └── test-annotations
    ├── nbd.jar
    └── test-classes

そして私のpom.xml。

    <properties>
        <java.version>11</java.version>
    </properties>

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

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.16.Final</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.1.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-cassandra</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
   (...)

</project>


ありがとうございました。

解決方法は?

のjarファイルをコピーします。 target ディレクトリを、ローカルコンピュータの target のディレクトリをDockerコンテナ内に作成します。しかし、その時に指定したのは target ディレクトリを ENTRYPOINT . 簡単に言うと、dockerが起動しようとしたときに、あなたのjarファイルを見つけることができないのです。

これを試してみてください。

FROM maven:3.6.0-jdk-11-slim 
ARG JAR_FILE
COPY target/${JAR_FILE} nbd.jar
ENTRYPOINT ["java","-jar","nbd.jar"]