Docker:从父目录添加文件

 云彩熨衣裳 发布于 2023-01-06 16:39

在我,Dockerfile我有:

ADD ../../myapp.war /opt/tomcat7/webapps/

该文件存在,因为ls ../../myapp.war返回正确的文件,但当我执行时,sudo docker build -t myapp .我有:

Step 1 : ADD ../../myapp.war /opt/tomcat7/webapps/
2014/07/02 19:18:09 ../../myapp.war: no such file or directory

有人知道为什么以及如何正确地做到这一点?

4 个回答
  • 不幸的是,(出于实际和安全原因,我猜),如果要添加/复制本地内容,它必须位于与之相同的根路径下Dockerfile.

    从文档:

    <src>路径必须位于构建的上下文中; 你 不能添加../something/something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护进程.

    编辑:现在有一个选项(-f)来设置Dockerfile的路径; 它可以用来达到你想要的效果,请参阅@Boedy的回复nelow.

    2023-01-06 16:41 回答
  • 添加一些代码片段以支持接受的答案。

    目录结构:

    setup/
     |__docker/DockerFile
     |__target/scripts/<myscripts.sh>
    src/
     |__<my source files>
    

    Docker文件条目:

    RUN mkdir -p /home/vagrant/dockerws/chatServerInstaller/scripts/
    RUN mkdir -p /home/vagrant/dockerws/chatServerInstaller/src/
    WORKDIR /home/vagrant/dockerws/chatServerInstaller
    
    #Copy all the required files from host's file system to the container file system.
    COPY setup/target/scripts/install_x.sh scripts/
    COPY setup/target/scripts/install_y.sh scripts/
    COPY src/ src/
    

    用于构建Docker映像的命令

    docker build -t test:latest -f setup/docker/Dockerfile .
    

    2023-01-06 16:41 回答
  • 使用docker-compose,您可以设置上下文文件夹:

    #docker-compose.yml
    version: '3.3'    
    services:
          yourservice:
            build:
              context: ./
              dockerfile: ./docker/yourservice/Dockerfile
    

    2023-01-06 16:41 回答
  • 您可以从父目录构建Dockerfile:

    docker build -t <some tag> -f <dir/dir/Dockerfile> .
    

    2023-01-06 16:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有