当前位置: 首页 > 知识库问答 >
问题:

COPY失败:没有指定源文件-如何使用工件?

楚乐逸
2023-03-14

使用maven build中的mvn包,我创建了一个包含正确子文件和文件夹的文件夹(名为“target”)。当我在我的开发环境中执行它时,我可以继续docker构建阶段。在Gitlab中,我得到错误:复制失败:未指定源文件。这发生在我的Dockerfile中的步骤3/7中。为什么即使我创建了一个工件,他们也不知道docker构建阶段的文件?

我的gitlab ci。yml:

image: maven:latest

stages:
  - build
  - run

cache:
  paths:
    - .m2/repository

maven-build:
  stage: build
  script: mvn package -s .m2/settings.xml
  artifacts:
    paths:
      - target/

docker-build:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  script: 
    - docker build . -t generic_test
    
run:
  stage: run    
  script:
    - docker run generictest

我的Dockerfile:

FROM selenium/standalone-firefox
WORKDIR /app
COPY target/*.jar app.jar
COPY *.json .
ENV http_proxy=http://10.127.255.25:8080
ENV https_proxy=http://10.127.255.25:8080
ENTRYPOINT java -jar app.jar /usr/bin/geckodriver

当我在Gitlab中有了目标文件夹,并且之前不必使用mvn package创建它时,它就工作了。以下是以前工作过的代码(是的,我必须创建它,不能将其留在存储库中):

stages:
    - build
    
docker-build:
  image: docker:latest
  stage: build
  services:
    - docker:dind
 
  script:
    - echo docker build . -t dockertest
    - echo docker run dockertest
 

共有1个答案

宋伯寅
2023-03-14

我得到了它。默认情况下,所有先前阶段的所有工件都会被传递(文档),但是如果您处于同一阶段,它就不知道工件。我必须创建两个不同的阶段。我不使用阶段:构建两次,我创建了第三次。

image: maven:latest

stages:
  - docker-build
  - maven-build
  - run

cache:
  paths:
    - .m2/repository

maven-build:
  stage: docker-build
  script: 
    - mvn package -s .m2/settings.xml
    - dir
    - cd target
    - dir
  artifacts:
    paths:
      - target/

docker-build:
  image: docker:latest
  stage: maven-build
  services:
    - docker:dind
  script: 
    - ls
    - docker build . -t generictest
    
run:
  image: docker:latest
  stage: run
  services:
    - docker:dind
  script:
    - docker run generictest
 类似资料:
  • 问题内容: 所有人,我正在尝试将文件从主机持久复制到映像,以便基于该映像启动的每个容器都可以使用这些文件。在debian wheezy 64bit上以virtualbox guest身份运行。 Dockerfile非常简单(安装八度映像): 发出构建命令后,我得到以下跟踪: Docker绝对拒绝将此文件从主机复制到映像中。不用说文件loadjson.m存在(猫显示),我所有更改路径(相对,绝对等)

  • 我是格拉德尔的新手。我正在尝试从我的构建中构建Dockerfile。格拉德尔 任务“:buildDocker”的执行失败。Docker执行失败的命令行[Docker build-t 73299472920.dkr.ecr.us-east-1.amazonaws.com/camunda:0.0.0.uncommitted-71119c2/Users/amx/Code/backend/jclaim/b

  • 我已经使用Azure虚拟机好几个星期了:(Windows 10,Visual Studio Developer虚拟机),但几个小时都无法登录。 机器报告为正在运行,RDP找到机器并显示登录框,但登录失败:(您的凭据不起作用) 可以重新启动VM,但会发生相同的错误。启动诊断显示Windows 10“beach cave”映像 尝试重置密码会在事件日志中显示错误: 无法重置密码至少一个资源部署操作失败

  • Puppet 的 file 资源有一个实用功能,那就是可以为文件指定多个源。 Puppet 会按顺序查找每一个。如果第一个不存在,就继续查找下一个,以此类推。 你可以利用这个功能指定一个默认文件源的替代品, 若一个甚至一系列替代品不存在就会使用默认的(最后一个列出的)文件源。 操作步骤 添加如下的类到你的配置清单: class mysql::app-config( $app ) { file

  • 我正在使用Camel2.15.2和部署到Tomcat容器中的Apache Commons Net3.3 on Java8。 问题是在处理了200多个文件(目录中超过4000个文件)后,路由始终停止,FTP客户端断开连接,并注销以下消息: 这是在相关路由开始时使用的URI。 有什么想法为什么连接可能在所有文件被处理之前关闭吗?

  • 问题内容: 我正在尝试设置Spring Security以与Spring Boot的嵌入式Tomcat实例一起使用。有很多基本示例可以执行此操作,但我被困在它们的后面,他们通过HTTP(不是HTTPS)执行基本身份验证。 如果可以访问Tomcat配置文件(),我可能可以使它工作,但是由于Spring Boot使用嵌入式Tomcat实例(否则非常方便),因此我无权访问Tomcat配置文件(至少不能访