docker-compose给出错误:找不到指定的Dockerfile:Dockerfile

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

我跑docker-compose up ,但目前给我这个:

 $ 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 

我不明白的是, Dockerfile docker-compose似乎find所有的Dockerfile ,除了在app文件夹中的。 我已经在OSX 10.11.2上安装了以下内容:

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

我刚刚开始与Docker,我有点卡在这里。 有人知道什么可能是错的,或者我可以如何debugging? 所有的提示,欢迎!

[编辑]我忘了提及没有隐藏的.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文件不包含任何特殊的内容(不知道它是否重要):

 $ cat .gitignore .project .pydevproject 

以下是如何指定dockerfile。 对不起,我不能在评论中作为格式不支持那里。

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

 app: build: context: app dockerfile: Dockerfile 

是你期待Dockerfile的path吗? 你可以使用--verbose标志来检查:

 docker-compose --verbose up | grep compose.cli.verbose_proxy.proxy_callable | grep path 

例如:

 compose.cli.verbose_proxy.proxy_callable: docker build <- (pull=False, cache_from=None, stream=True, nocache=False, labels=None, tag='your_app', buildargs={'some_build': '1901', 'addr': '0.0.0.0', 'corsdomain': '*', 'rpcport': '8545'}, forcerm=False, rm=True, path='/Users/jmunsch/Desktop/dev/your_app/app?', # in the verbose output dockerfile='Dockerfile') 

在Dockerfile中定义ARGS:

 ARG some_flag= ARG some_build=1900 ARG addr=0.0.0.0 ARG corsdomain="*" ARG rpcport=8545 

并在一个撰写文件,如:

 build: context: ./your_app dockerfile: Dockerfile args: some_flag: # --some_flag some_build: 1901 # --some_build 1901 rpcaddr: 0.0.0.0 # --rpcaddr 0.0.0.0 rpcport: 8545 # --rpcport 8545 corsdomain: "*" # --corsdomain