J'ai cloné une configuration de menu fixe qui utilise la composition de menu fixe. Un développeur à distance confirme que cela fonctionne, alors mon problème semble être lié à ma configuration.
J'ai exécuté docker-compose up
, mais cela me donne actuellement 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 toutes les Dockerfile
s, à l'exception de celle du dossier app
. Les éléments suivants sont installés sur OSX 10.11.2:
Docker version 1.10.3, build 20f81dd
docker-compose version 1.6.2, build 4d72027
Je viens juste de commencer avec Docker et je suis un peu coincé ici. Est-ce que quelqu'un sait ce qui pourrait éventuellement être faux ou comment je peux résoudre ce problème? Tous les conseils sont les bienvenus!
[EDIT] J'ai oublié de mentionner qu'il n'y a pas de fichier caché .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 le fichier .gitignore ne contient rien de spécial non plus (je ne sais pas si c'est important):
$ cat .gitignore
.project
.pydevproject
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 sous Windows avec un docker-compose.yml
créé par un modèle Visual Studio. Le modèle a été créé en tant que:
build:
context: .
dockerfile: <ProjectFolder>\Dockerfile
Et je devenais erreur: Cannot locate specified Dockerfile: <ProjectFolder>\Dockerfile
. J'ai changé le \
en /
et cela a commencé à fonctionner pour moi (c'est-à-dire <ProjectFolder>/Dockerfile
). Peut-être que cela aidera si quelqu'un a cette erreur sous Windows.
Dans le fichier docker-compose.yml pour effectuer le changement, afin de répondre au fichier Docker:
app:
build: ./app
Est-ce que path
est l'endroit où vous attendez le fichier Docker? Vous pouvez vérifier en utilisant le drapeau --verbose
comme:
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éfinissez l'ARGS:
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
Dans mon cas, c'était une mauvaise branche sur git. N'oubliez pas de définir la branche spécifique si vous construisez votre image à partir d'un contexte distant. L'URL du contexte devrait ressembler à ceci:
services:
wss-home:
build:
context: "http://${LOGIN}:${PASSWD}@Host/path/to/repository.git#branch_name"
dockerfile: Dockerfile.prod
Vous devez spécifier correctement le nom de fichier du menu fixe et il est sensible à la casse. J'ai eu la lettre majuscule dans DockerFile et ainsi il ne peut pas les trouver. J'espère que ça aide quelqu'un qui a lutté comme moi. Il est préférable d’utiliser l’attribut dockerfile pour composer le fichier.
app:
build:
dockerfile: DockerFile