docker-compose donne erreur: Impossible de localiser Dockerfile spécifié: Dockerfile

j'ai cloné une configuration de docker qui utilise docker-composer. Une distance développeur confirme il fonctionne donc mon problème semble être avec ma configuration.

j'ai couru docker-compose up, mais que pour l'instant me donne ceci:

$ 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

Mon docker-compose.yml ressemble à ceci:

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

et l'arbre ressemble à ceci:

$ 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

ce que je ne comprends pas c'est que docker-compose semble trouver tous Dockerfiles, sauf pour l'une dans l' app dossier. J'ai l' suivant installé sur OSX 10.11.2:

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

je commence avec Docker et je suis un peu coincé ici. Quelqu'un sait ce qui pourrait éventuellement être faux ou comment je peut corriger cela? Tous les conseils sont les bienvenus!

[modifier] J'ai oublié de mentionner qu'il n'est pas caché .fichier 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

et la .le fichier gitignore ne contient rien de spécial non plus (Je ne sais pas s'il les questions):

$ cat .gitignore
.project
.pydevproject
17
demandé sur kramer65 2016-03-26 17:31:17

4 réponses

Voici comment spécifier dockerfile. Désolé, Je ne peux pas le faire dans les commentaires car le formatage n'est pas pris en charge là-bas.

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

app:
    build:
      context: app
      dockerfile: Dockerfile
16
répondu Xiongbing Jin 2016-03-26 16:55:37

j'ai eu ce problème sur Windows avec un docker-compose.yml créé par un modèle de studio visuel. Le modèle a été créé:

build:
  context: .
  dockerfile: <ProjectFolder>\Dockerfile

Et j'obtenais l'erreur: Cannot locate specified Dockerfile: <ProjectFolder>\Dockerfile. J'ai changé le \/ et il a commencé à travailler pour moi (c'est à dire <ProjectFolder>/Dockerfile). Peut-être que cela aidera si quelqu'un a cette erreur sur Windows.

2
répondu crgolden 2018-07-22 19:03:58

path où vous attendez le fichier Dockerfile? Vous pouvez vérifier à l'aide de la --verbose drapeau de la forme:

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

par exemple:

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')

dans Dockerfile définir les ARGUMENTS:

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

et dans un fichier de composition comme:

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
1
répondu jmunsch 2017-09-17 05:40:26

à l'Intérieur de docker-composer.fichier yml pour faire le changement, afin de répondre à la Dockerfile:

app:
  build: ./app
1
répondu Dantez Layton 2018-08-11 17:50:32