docker-compose给出了ERROR:找不到指定的Dockerfile:Dockerfile

kra*_*r65 38 docker docker-compose

我克隆了一个使用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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

树看起来像这样:

$ 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
Run Code Online (Sandbox Code Playgroud)

我不明白的是,除了文件夹中的那个之外,它docker-compose似乎找不到所有Dockerfile的东西app.我在OSX 10.11.2上安装了以下内容:

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

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

[编辑]我忘了提到没有隐藏的.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
Run Code Online (Sandbox Code Playgroud)

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

$ cat .gitignore
.project
.pydevproject
Run Code Online (Sandbox Code Playgroud)

Xio*_*Jin 33

以下是如何指定dockerfile.抱歉,我不能在评论中这样做,因为那里不支持格式化.

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

app:
    build:
      context: app
      dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)

  • 对于那些不清楚为什么会起作用的人,原因是因为在定义的构建上下文中搜索了"dockerfile". (6认同)
  • 感谢您的建议,但我刚刚发现了这个问题.结果是Dockerfile的名称是`Dockerfile`,最后包括一个空格.我不知道那个空间到底是怎么回事,但是是的,它再次起作用.. :-)非常感谢你的建议!我会接受你的回答,因为它也会让我找到解决方案. (4认同)

crg*_*den 7

我在Windows上遇到docker-compose.yml了这个由Visual Studio模板创建的问题.模板创建为:

build:
  context: .
  dockerfile: <ProjectFolder>\Dockerfile
Run Code Online (Sandbox Code Playgroud)

我得到了错误:Cannot locate specified Dockerfile: <ProjectFolder>\Dockerfile.我改变了\/,并开始对我来说(即工作<ProjectFolder>/Dockerfile).如果有人在Windows上出现此错误,这可能会有所帮助.

  • 伴侣!我可以给你一个湿漉漉的大吻! (2认同)
  • 同样,它正在寻找相对于指定上下文的Dockerfile。所以我的上下文:./services/export/需要dockerfile:config / Dockerfile,其中config是export中的文件夹。 (2认同)

小智 6

对里面的docker-compose.yml文件做改动,以满足Dockerfile:

app:
  build: ./app
Run Code Online (Sandbox Code Playgroud)