在我的Dockerfile我有:

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

该文件以ls ../../myapp的形式存在。war返回我正确的文件,但当我执行sudo docker构建-t myapp。我有:

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

有人知道为什么和如何正确地做吗?


当前回答

使用docker-compose,你可以设置上下文文件夹:

# docker-compose.yml

version: '3.3'    
services:
  yourservice:
    build:
      context: ./
      dockerfile: ./docker/yourservice/Dockerfile

其他回答

对于那些使用composer的人来说,解决方案是使用指向父文件夹的卷:

#docker-composer.yml

foo:
  build: foo
  volumes:
    - ./:/src/:ro

但是我很确定可以在Dockerfile中处理卷。

从上目录构建img 命名为img 启用适当的卷共享 查看上面链接中的Makefile,了解如何启动容器… Docker构建。-t proj-devops-img——no-cache——build-arg UID=$(shell id -u)——build-arg GID=$(shell id -g) -f src/docker/devops/Dockerfile . t

改为CD到父目录 从父目录构建映像,指定Dockerfile的路径

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

在这种情况下,docker的上下文将切换到父目录,供ADD和COPY访问

如果你正在使用skaffold,使用'context:'为每个图像指定上下文位置dockerfile - context: ../../../

            apiVersion: skaffold/v2beta4
            kind: Config
            metadata:
                name: frontend
            build:
                artifacts:
                    - image: nginx-angular-ui
                      context: ../../../
                      sync:
                          # A local build will update dist and sync it to the container
                          manual:
                              - src: './dist/apps'
                                dest: '/usr/share/nginx/html'
                      docker:
                          dockerfile: ./tools/pipelines/dockerfile/nginx.dev.dockerfile
                    - image: webapi/image
                      context: ../../../../api/
                      docker:
                          dockerfile: ./dockerfile
            deploy:
                kubectl:
                    manifests:
                        - ./.k8s/*.yml

运行-f ./ Skaffold .yaml

使用docker-compose,你可以设置上下文文件夹:

# docker-compose.yml

version: '3.3'    
services:
  yourservice:
    build:
      context: ./
      dockerfile: ./docker/yourservice/Dockerfile