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 Dockerfile
s, 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
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
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.
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
à l'Intérieur de docker-composer.fichier yml pour faire le changement, afin de répondre à la Dockerfile:
app:
build: ./app