Dockerfile中的copy命令使用
Dockerfile中的copy命令
在编写Dockerfile的时候copy宿主机文件到镜像中,在执行构建的时候报错
guoliang@gldeMacBook-Pro docker_file % docker build -f Dockerfile -t jmeter01 .
[+] Building 3.3s (15/16)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 860B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/java:8 3.1s
=> [auth] library/java:pull token for registry-1.docker.io 0.0s
=> [ 1/11] FROM docker.io/library/java:8@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d 0.0s
=> [internal] load build context 0.1s
=> => transferring context: 2B 0.1s
=> CACHED [ 2/11] RUN mkdir /jmeterdocker 0.0s
=> CACHED [ 3/11] RUN mkdir -p /jmeterdocker/test 0.0s
=> CACHED [ 4/11] RUN mkdir -p /jmeterdocker/test/input/jmx 0.0s
=> CACHED [ 5/11] RUN mkdir -p /jmeterdocker/test/input/testdata 0.0s
=> CACHED [ 6/11] RUN mkdir -p /jmeterdocker/test/report/html 0.0s
=> CACHED [ 7/11] RUN mkdir -p /jmeterdocker/test/report/jtl 0.0s
=> CACHED [ 8/11] RUN mkdir -p /jmeterdocker/test/report/outputdata 0.0s
=> CACHED [ 9/11] RUN cd /jmeterdocker 0.0s
=> ERROR [10/11] COPY ../apache-jmeter-5.4.1.tgz /jmeterdocker 0.0s
------
> [10/11] COPY ../apache-jmeter-5.4.1.tgz /jmeterdocker:
------
failed to compute cache key: "/apache-jmeter-5.4.1.tgz" not found: not found
看下Dockerfile
FROM java:8
MAINTAINER <qihao@163.com>
ENV http_proxy ""
ENV https_proxy ""
RUN mkdir /jmeterdocker
RUN mkdir -p /jmeterdocker/test
RUN mkdir -p /jmeterdocker/test/input/jmx
RUN mkdir -p /jmeterdocker/test/input/testdata
RUN mkdir -p /jmeterdocker/test/report/html
RUN mkdir -p /jmeterdocker/test/report/jtl
RUN mkdir -p /jmeterdocker/test/report/outputdata
RUN cd /jmeterdocker
ENV JMETER_VERSION=5.4.1
ENV JMETER_HOME=/jmeterdocker/apache-jmeter-${JMETER_VERSION}
ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}
ENV PATH=${JMETER_HOME}/bin:${PATH}
COPY ../apache-jmeter-5.4.1.tgz /jmeterdocker
RUN cd /jmeterdocker && tar xvf apache-jmeter-5.4.1.tgz && rm apache-jmeter-5.4.1.tgz 可以看到Copy的文件使用的是相对路径(把jmetercopy到镜像的jmeterdocker文件中)
我的jmeter.tgz存放在Docker的上一级目录中。

命令执行后报错提示找不到
failed to compute cache key: "/apache-jmeter-5.4.1.tgz" not found: not found
后来又尝试使用绝对路径更改如下
使用绝对路径
FROM java:8
MAINTAINER <qihao@163.com>
ENV http_proxy ""
ENV https_proxy ""
RUN mkdir /jmeterdocker
RUN mkdir -p /jmeterdocker/test
RUN mkdir -p /jmeterdocker/test/input/jmx
RUN mkdir -p /jmeterdocker/test/input/testdata
RUN mkdir -p /jmeterdocker/test/report/html
RUN mkdir -p /jmeterdocker/test/report/jtl
RUN mkdir -p /jmeterdocker/test/report/outputdata
RUN cd /jmeterdocker
ENV JMETER_VERSION=5.4.1
ENV JMETER_HOME=/jmeterdocker/apache-jmeter-${JMETER_VERSION}
ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}
ENV PATH=${JMETER_HOME}/bin:${PATH}
COPY /Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz /jmeterdocker
RUN cd /jmeterdocker && tar xvf apache-jmeter-5.4.1.tgz && rm apache-jmeter-5.4.1.tgz build之后报错内容
guoliang@gldeMacBook-Pro docker_file % docker build -f Dockerfile -t jmeter001 .
[+] Building 1.2s (14/15)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 177B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/java:8 1.1s
=> [ 1/11] FROM docker.io/library/java:8@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [ 2/11] RUN mkdir /jmeterdocker 0.0s
=> CACHED [ 3/11] RUN mkdir -p /jmeterdocker/test 0.0s
=> CACHED [ 4/11] RUN mkdir -p /jmeterdocker/test/input/jmx 0.0s
=> CACHED [ 5/11] RUN mkdir -p /jmeterdocker/test/input/testdata 0.0s
=> CACHED [ 6/11] RUN mkdir -p /jmeterdocker/test/report/html 0.0s
=> CACHED [ 7/11] RUN mkdir -p /jmeterdocker/test/report/jtl 0.0s
=> CACHED [ 8/11] RUN mkdir -p /jmeterdocker/test/report/outputdata 0.0s
=> CACHED [ 9/11] RUN cd /jmeterdocker 0.0s
=> ERROR [10/11] COPY /Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz /jmeterdocker 0.0s
------
> [10/11] COPY /Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz /jmeterdocker:
------
failed to compute cache key: "/Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz" not found: not found
后查询Docker文档,它说不能使用相对路径。

当我将jmeter.tgz文件移动到Dockerfile同目录下在进行build后Dockerfile执行成功。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
docker安装并持久化postgresql数据库的操作步骤
这篇文章主要介绍了docker安装并持久化postgresql数据库的操作步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-12-12
详解Docker+Jenkins+Gitlab+Django应用部署实践
这篇文章主要介绍了Docker+Jenkins+Gitlab+Django应用部署实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-01-01
在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法
这篇文章主要介绍了在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法,需要的的朋友参考下吧2017-01-01
docker+jenkins+gitee配置持续集成部署方式
这篇文章主要介绍了docker+jenkins+gitee配置持续集成部署方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-09-09


最新评论