docker-compose给出错误:无法找到指定的Dockerfile:Dockerfile [英] docker-compose gives ERROR: Cannot locate specified Dockerfile: Dockerfile

查看:802
本文介绍了docker-compose给出错误:无法找到指定的Dockerfile:Dockerfile的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我克隆了一个使用docker-compose的docker设置。一位远程开发人员确认它可以正常工作,所以我的问题似乎出在我的设置上。

I've cloned a docker setup which uses docker-compose. One remote developer confirms it works so my problem seems to be with my setup.

我运行了 docker-compose up ,但是目前这给了我:

I ran docker-compose up, but that currently gives me this:

$ docker-compose up
Creating volume "mycompanydocker_mysql-data" with local driver
Creating volume "mycompanydocker_redis-data" with local driver
Creating volume "mycompanydocker_app-data" with local driver
Creating volume "mycompanydocker_mongo-data" with local driver
mycompanydocker_redis_1 is up-to-date
mycompanydocker_mongo_1 is up-to-date
mycompanydocker_mysql_1 is up-to-date
Building app
ERROR: Cannot locate specified Dockerfile: Dockerfile

我的 docker-compose.yml 看起来像这样:

version: '2'

services:
  mysql:
    build: mysql/.
    env_file: env
    expose:
    - 3306
    ports:
    - "3306:3306"
    volumes:
    - mysql-data:/var/lib/mysql

  mongo:
    build: mongo/.
    env_file: env
    expose:
    - 27017
    ports:
    - "27017:27017"
    volumes:
    - mongo-data:/data/db

  redis:
    build: redis/.
    env_file: env
    expose:
    - 6379
    ports:
    - "6379:6379"
    volumes:
    - redis-data:/data

  app:
    build: app/.
    env_file: env
    expose:
     - 80
    ports:
    - "80:80"
    volumes:
    # To mount a local directory, change this
    # To use a docker volume
    - app-data:/app
    # local app
    # - ./mycompany:/app
    depends_on:
    - mysql
    - mongo
    - redis

volumes:
  app-data:
    driver: local
  mysql-data:
    driver: local
  redis-data:
    driver: local
  mongo-data:
    driver: local

,树看起来像这样:

$ tree
.
├── README.rst
├── app
│   ├── Dockerfile
│   ├── bin
│   │   ├── setup.sh
│   │   ├── start-nginx.sh
│   │   ├── start-rqworker.sh
│   │   ├── start.sh
│   │   └── update.sh
│   ├── etc
│   │   ├── nginx
│   │   │   └── sites-available
│   │   │       └── app
│   │   ├── supervisor
│   │   │   └── conf.d
│   │   │       └── supervisord.conf
│   │   └── supervisord.conf
│   └── ssh
│       └── id_rsa
├── docker-compose.yml
├── env
├── mongo
│   └── Dockerfile
├── mysql
│   └── Dockerfile
└── redis
    └── Dockerfile

我不了解的是 docker-compose 似乎找到了所有 Dockerfile s,但 app 文件夹中的那个除外。我在OSX 10.11.2上安装了以下软件:

The thing I don't understand is that docker-compose seems to find all Dockerfiles, except for the one in the app folder. I've got the following installed on OSX 10.11.2:


  • Docker版本1.10.3,内部版本20f81dd

  • docker-compose版本1.6.2,构建4d72027

  • Docker version 1.10.3, build 20f81dd
  • docker-compose version 1.6.2, build 4d72027

我刚开始使用Docker,有点卡在这里。有人知道什么可能是错误的,或者我该如何调试呢?欢迎所有提示!

I'm just starting out with Docker and I'm kinda stuck here. Does anybody know what could possibly be wrong or how I can debug this? All tips are welcome!



我忘了提到没有隐藏的 .dockerignore 文件:

$ ls -la
total 56
drwx------@   11 kramer  staff    374 25 mrt 14:13 .
drwx------+ 1134 kramer  staff  38556 26 mrt 17:27 ..
-rw-r--r--@    1 kramer  staff   8196 26 mrt 08:14 .DS_Store
-rw-r--r--@    1 kramer  staff     23 24 mrt 15:29 .gitignore
-rw-r--r--@    1 kramer  staff   3879 24 mrt 15:29 README.rst
drwxr-xr-x@    7 kramer  staff    238 25 mrt 14:26 app
-rw-r--r--@    1 kramer  staff    868 25 mrt 17:50 docker-compose.yml
-rw-r--r--@    1 kramer  staff    219 24 mrt 15:29 env
drwxr-xr-x@    3 kramer  staff    102 24 mrt 15:29 mongo
drwxr-xr-x@    3 kramer  staff    102 24 mrt 15:29 mysql
drwxr-xr-x@    3 kramer  staff    102 24 mrt 15:29 redis

.gitignore 文件也不包含任何特殊内容(不知道是否重要):

and the .gitignore file doesn't contain anything special either (don't know if it matters):

$ cat .gitignore
.project
.pydevproject


推荐答案

以下是指定dockerfile的方法。抱歉,我无法在注释中执行此操作,因为那里不支持格式化。

Here is how to specify dockerfile. Sorry I cannot do it in comments as formatting is not supported over there.

https://docs.docker.com/compose/compose-file/#context

app:
    build:
      context: app
      dockerfile: Dockerfile

这篇关于docker-compose给出错误:无法找到指定的Dockerfile:Dockerfile的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆