2016-03-26 8 views
9

मैंने डॉकर सेटअप को क्लोन किया है जो डॉकर-कंपोज़ का उपयोग करता है। एक रिमोट डेवलपर यह पुष्टि करता है कि यह काम करता है इसलिए मेरी समस्या मेरे सेटअप के साथ प्रतीत होती है।डॉकर-कंपोज़ त्रुटि प्रदान करता है: निर्दिष्ट डॉकरफ़ाइल का पता नहीं लगा सकता: डॉकरफ़ाइल

मैं 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 

मुझे समझ में नहीं आता कि docker-compose सभी 0 ढूंढ रहा हैएस, app फ़ोल्डर में से किसी एक को छोड़कर। मैं OSX 10.11.2 पर स्थापित निम्न है:

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

मैं सिर्फ डोकर के साथ बाहर शुरू कर और मैं थोड़े यहाँ अटक कर रहा हूँ। क्या कोई जानता है कि संभवतः गलत क्या हो सकता है या मैं इसे कैसे डिबग कर सकता हूं? सभी सुझावों का स्वागत है!

[संपादित करें] मैं है कि वहाँ कोई छिपी .dockerignore फ़ाइल उल्लेख करना भूल गया:

$ ls -la 
total 56 
[email protected] 11 kramer staff 374 25 mrt 14:13 . 
drwx------+ 1134 kramer staff 38556 26 mrt 17:27 .. 
[email protected] 1 kramer staff 8196 26 mrt 08:14 .DS_Store 
[email protected] 1 kramer staff  23 24 mrt 15:29 .gitignore 
[email protected] 1 kramer staff 3879 24 mrt 15:29 README.rst 
[email protected] 7 kramer staff 238 25 mrt 14:26 app 
[email protected] 1 kramer staff 868 25 mrt 17:50 docker-compose.yml 
[email protected] 1 kramer staff 219 24 mrt 15:29 env 
[email protected] 3 kramer staff 102 24 mrt 15:29 mongo 
[email protected] 3 kramer staff 102 24 mrt 15:29 mysql 
[email protected] 3 kramer staff 102 24 mrt 15:29 redis 

और .gitignore फ़ाइल कुछ भी विशेष नहीं होते हैं या तो (अगर यह मायने रखती है पता नहीं है):

$ cat .gitignore 
.project 
.pydevproject 
+0

जांचें कि क्या आपके पास छुपा हुआ है। डॉक rignore' फ़ाइल जिसमें इसकी सामग्री में 'डॉकरफ़ाइल' हो सकती है। एक और संभावित कारण यह है कि आपके फ़ोल्डर संरचना में सिम्लिंक हैं। –

+0

@ वार्मोवरफ्लो - मैं यह उल्लेख करना भूल गया कि कोई 'डॉकरिग्नोर' नहीं है। मैंने पूरी फाइल सिस्टम ('सुडो ढूंढ/-नाम। डॉकरिग्नोर') की खोज की और उसे '। डॉकरिग्नोर' फ़ाइल मिली, लेकिन यह कुछ पूरी तरह से असंबंधित रेपो में थी। इसके अलावा, परियोजना में कोई सिम्लिंक नहीं हैं। – kramer65

+0

क्या आप यह देखने के लिए स्पष्ट रूप से डॉकरफ़ाइल नाम निर्दिष्ट कर सकते हैं कि यह काम करता है या नहीं। https://docs.docker.com/compose/compose-file/#context देखें।'निर्माण: संदर्भ:। डॉकरफ़ाइल: डॉकरफ़ाइल-वैकल्पिक ' –

उत्तर

8

यहां डॉकरफ़ाइल निर्दिष्ट करने का तरीका बताया गया है। क्षमा करें, मैं टिप्पणियों में ऐसा नहीं कर सकता क्योंकि फ़ॉर्मेटिंग वहां पर समर्थित नहीं है।

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

app: 
    build: 
     context: app 
     dockerfile: Dockerfile 
+0

सुझाव के लिए धन्यवाद, लेकिन मुझे अभी समस्या मिली है। डॉकरफाइल का नाम बदलकर 'डॉकरफाइल' था, जिसमें अंत में एक स्थान भी शामिल था। मुझे नहीं पता कि वह जगह कैसे मिली, लेकिन हाँ, यह फिर से काम कर रहा है .. :-) धन्यवाद आपके सुझावों के लिए दस लाख! मैं आपका जवाब स्वीकार करूंगा, क्योंकि इससे मुझे समाधान भी मिल जाएगा। – kramer65

+1

खुशी है कि आप पाए गए। यह ध्यान देना बहुत मुश्किल है। –

+1

उन लोगों के लिए जो इस बात पर स्पष्ट नहीं हैं कि यह क्यों काम करता है, इसका कारण यह है कि परिभाषित निर्माण संदर्भ में 'डॉकरफ़ाइल' की खोज की जाती है। – mikegreenberg

1

path जहां Dockerfile उम्मीद है? आप का उपयोग कर जाँच कर सकते हैं --verbose ध्वज की तरह:

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 

docker-compose --verbose up | grep compose.cli.verbose_proxy.proxy_callable | grep path 
उदाहरण के लिए

संबंधित मुद्दे