😢

DockerfileのCOPYでno such file or directry.

2022/10/22に公開約2,700字

誰か困った人がいた時にその人に届けばいいなと思い、メモを残す。

結論

docker buildコマンドでno such file or directoryが発生した場合、Dockerfileのファイル名が誤っているか、もしくはbuildで使用する対象ファイルやディレクトリが.dockerignoreファイルの中で指定されていることを疑ってほしい。

実際のエラー

% docker build --build-arg JAR_FILE=build/libs/\*.jar -t springio/gs-spring-boot-docker .
[+] Building 2.5s (6/6) FINISHED                                                                                                                                                     
 => [internal] load build definition from Dockerfile                                                                                                                            0.1s
 => => transferring dockerfile: 256B                                                                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                                               0.0s
 => => transferring context: 35B                                                                                                                                                0.0s
 => [internal] load metadata for docker.io/library/eclipse-temurin:17-jdk-alpine                                                                                                2.3s
 => [internal] load build context                                                                                                                                               0.0s
 => => transferring context: 2B                                                                                                                                                 0.0s
 => CACHED [1/2] FROM docker.io/library/eclipse-temurin:17-jdk-alpine@sha256:323051c8beff7fe2bed67775bf9bd332a1680286be2e364b2fcec745f4ec8b95                                   0.0s
 => ERROR [2/2] COPY ./build/libs/*.jar app.jar                                                                                                                                 0.0s
------
 > [2/2] COPY ./build/libs/*.jar app.jar:
------
lstat /var/lib/docker/tmp/buildkit-mount3201121505/build/libs: no such file or directory

背景

  • Herokuの無料プランが廃止になるので、Fly.ioへの移行を進めていた。

  • 公式の手順に従い、既存プロジェクトをFly.ioへデプロイする際、Spring Bootのプロジェクトに.dockerignoreファイルを作成した。

% flyctl launch
? Would you like to copy its configuration to the new app? Yes
Creating app in /Users/O/X
? Create .dockerignore from 2 .gitignore files? Yes
Created /Users/Oyama/git/koalaMania/.dockerignore from 2 .gitignore files.
  • この際に作成された.dockerignoreにてbuildフォルダ以下が対象と指定されていた。
### NetBeans ###
**/build
  • そのためdockerから build/libs/*.jar は存在しないように見えていたのである。

Discussion

ログインするとコメントできます