Docker:COPY在运行docker build的本地目录中找不到文件

时间:2019-12-11 14:36:28

标签: docker

在前缀为COPY example.jar /app 的目录中,有一个example.jar文件和一个Dockerfile,在Dockerfile中,有以下语句:

  docker build -t image_name ./

我跑步

COPY failed: stat /var/lib/docker/tmp/docker-builder457658077/example.jar: no such file or directory

然后出现以下错误:

COPY

为什么/home/gitlab-runner/builds/不能在带有前缀/var/lib/docker..的目录中找到example.jar?奇怪的 [root@koala 53bdd1747e3590f90fcc84ef4963d4885711e25f]# pwd /home/gitlab-runner/builds/pica/eureka/53bdd1747e3590f90fcc84ef4963d4885711e25f [root@koala 53bdd1747e3590f90fcc84ef4963d4885711e25f]# ls -al total 52068 drwxrwxr-x 5 gitlab-runner gitlab-runner 4096 Dec 11 15:23 . drwxrwxr-x 4 gitlab-runner gitlab-runner 4096 Dec 11 11:35 .. -rw-rw-r-- 1 gitlab-runner gitlab-runner 17 Dec 11 11:35 APPLICATION_VERSION -rw-rw-r-- 1 gitlab-runner gitlab-runner 644 Dec 11 11:35 docker-compose.yml -rw-rw-r-- 1 gitlab-runner gitlab-runner 568 Dec 11 15:23 Dockerfile drwxrwxr-x 8 gitlab-runner gitlab-runner 4096 Dec 11 11:35 .git -rw-rw-r-- 1 gitlab-runner gitlab-runner 322 Dec 11 11:35 .gitignore -rw-rw-r-- 1 gitlab-runner gitlab-runner 2438 Dec 11 11:35 .gitlab-ci.yml -rw-rw-r-- 1 gitlab-runner gitlab-runner 53271183 Dec 11 11:35 example.jar -rw-rw-r-- 1 gitlab-runner gitlab-runner 1043 Dec 11 11:35 pom.xml drwxrwxr-x 4 gitlab-runner gitlab-runner 4096 Dec 11 11:35 src drwxrwxr-x 8 gitlab-runner gitlab-runner 4096 Dec 11 11:35 target 路径如何跳入?该如何处理?谢谢!


library(caret)
library(randomForest)
library(foreach)
library(doParallel)

#very small database example
db <-
  data.frame(Y = as.factor(sample(c(0, 1), 1000, replace = T)),
             X1 = sample(c(100:2000), 1000, replace = T),
             X2=sample(c(100:2000), 1000, replace = T),
             X3 = sample(c(100:2000), 1000, replace = T),
             X4 = sample(c(100:2000), 1000, replace = T))

#bootstrap 100 times
times <- 100
set.seed(5)
#create 1000 resample indexes
res <- createResample(db$Y,times = times)

db_list <- list()
#list of database resampled
for (i in 1:times) {
  db_list[[i]] <- db[res[[i]],]
}

#create 100 models from the db_list and make prediction
model_list <- list()
pred <- data.frame(Y=rep(NA,nrow(db)))

#on my machin this loop take 28.10 sec elapsed
system.time(for (l in seq_len(times)) {
  set.seed(5)
  model_list[[l]] <- randomForest(Y~.,data=db_list[[l]])
  pred[,l] <- predict(model_list[[l]],newdata = db[,-1])#predict from the original Xn variables
  db_pred <- db
  db_pred <- cbind(db_pred,pred)
})

#make cluster with 11 core in my machine
cl <- makeCluster(detectCores()-1)
registerDoParallel(cl)

#on my machin this loop take 23.25 sec elapsed
system.time(foreach(l = seq_len(times),.packages = "randomForest")%dopar% {
  set.seed(5)
  model_list[[l]] <- randomForest(Y~.,data=db_list[[l]])
  pred[,l] <- predict(model_list[[l]],newdata = db[,-1])#predict from the original Xn variables
  db_pred <- db
  db_pred <- cbind(db_pred,pred)
})

stopCluster(cl)

1 个答案:

答案 0 :(得分:2)

[从服务器故障中复制了我的答案,没有意识到这个问题是交叉发布的]

COPY example.jar /app

此命令期望在构建上下文的根中有一个example.jar。构建上下文是docker build(在本例中为.)或当前目录的最后一个参数。从ls -al输出中,您没有将此jar文件归档到目录中,而docker告诉您COPY命令在构建上下文中找不到example.jar。如果它在其他子目录之一中,则需要使用该位置更新COPY命令。


要调试构建上下文的问题,可以构建并运行以下Dockerfile:

FROM busybox
COPY . /build-context
WORKDIR /build-context
CMD find .

这会将整个构建上下文复制到映像中,并在运行容器时使用find命令列出内容。