2016-03-06 53 views
1

我最近繼承了被配置爲在開發中使用泊塢運行Rails項目。這是第一次使用Docker,雖然我覺得它應該很容易,但我無法讓它工作。泊塢窗構成的卷造成錯誤:集裝箱命令找不到或不存在

當我嘗試運行碼頭工人,組成了輸出爲:

Creating projectmyapp_db_1
Creating projectmyapp_bundle_1
Creating projectmyapp_web_1
ERROR: Container command not found or does not exist.

的內容我docker-compose.yml

db: 
    build: ./docker_db 

web:  
    build: . 
    command: ./script/start 
    volumes: 
    - .:/myapp 
    ports: 
    - "3000:3000" 
    links: 
    - db 
    volumes_from: 
    - bundle 

bundle: 
    image: busybox 
    volumes: 
    - /bundle 

在調試過程中,我設法將它縮小到卷線我的web容器。如果我註釋掉- .:/myapp線泊塢窗,構成了命令完成罰款。我可以訪問該網站在泊塢窗機的IP地址,但是更改到現場反映我必須完全重建它,我假設就是安裝在當前目錄的體積是容器。

的Dockerfile在我的主要應用內容:

FROM ruby:2.2.2 
RUN apt-get update -qq && apt-get install -y build-essential locales libpq-dev nodejs git postgresql-client-9.4 imagemagick libmagickwand-dev libreadline6 libreadline6-dev graphviz less 

RUN echo "ar_SA.UTF-8 UTF-8\nen_GB.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen 
RUN localedef -i ar_SA -c -f UTF-8 -A /usr/share/locale/locale.alias ar_SA.UTF-8 
RUN localedef -i en_GB -c -f UTF-8 -A /usr/share/locale/locale.alias en_GB.UTF-8 

ENV LC_ALL en_GB.UTF-8 
ENV LANG en_GB.UTF-8 
ENV LANGUAGE en_GB.UTF-8 

RUN mkdir -p /myapp/config 

WORKDIR /myapp 
ADD Gemfile /myapp/Gemfile 
ADD Gemfile.lock /myapp/Gemfile.lock 
ADD config/database.yml.docker /myapp/config/database.yml 

ENV BUNDLE_PATH /bundle 

ADD . /myapp 

CMD rails s -b 0.0.0.0 

泊塢窗 - 版本的結果是:

Docker version 1.10.2, build c3959b1

我也發現這個類似的問題在這裏:Issue with docker compose: container command not found但不覺得這是同樣的解決方案。

任何幫助將是非常讚賞 - 而我有我的頭周圍泊塢窗的基礎知識,現在我似乎無法得到這個問題的底部。

拋出的錯誤似乎是從這裏的碼頭工人來源:https://github.com/docker/docker/blob/df2b74188ec51422e84ec1dbdc58abf08c215019/api/client/run.go#L56

回答

1

command: ./script/start是你的容器內要執行的命令,它看起來像這個腳本是不可用的容器內。

我建議將應用程序文件和相關的Dockerfile移動到web文件夾,但將docker-compose.yml文件保留爲root。修改後的docker-compose.yml

db: 
    build: ./docker_db 

web:  
    build: ./web 
    command: myapp/script/start 
    volumes: 
    - ./web:/myapp 
    ports: 
    - "3000:3000" 
    links: 
    - db 
    volumes_from: 
    - bundle 

bundle: 
    image: busybox 
    volumes: 
    - /bundle 

修改後的Dockerfile將

FROM ruby:2.2.2 
RUN apt-get update -qq && apt-get install -y build-essential locales libpq-dev nodejs git postgresql-client-9.4 imagemagick libmagickwand-dev libreadline6 libreadline6-dev graphviz less 

RUN echo "ar_SA.UTF-8 UTF-8\nen_GB.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen 
RUN localedef -i ar_SA -c -f UTF-8 -A /usr/share/locale/locale.alias ar_SA.UTF-8 
RUN localedef -i en_GB -c -f UTF-8 -A /usr/share/locale/locale.alias en_GB.UTF-8 

ENV LC_ALL en_GB.UTF-8 
ENV LANG en_GB.UTF-8 
ENV LANGUAGE en_GB.UTF-8 

WORKDIR /myapp 

ENV BUNDLE_PATH /bundle 

CMD rails s -b 0.0.0.0 

注意,我刪除了所有的ADD命令的,因爲你會被安裝在主機的文件夾。確保主機上,在新的網絡文件夾,您有下列文件(重命名或config/database.yml.docker文件複製到config/database.yml

./web/Gemfile 
./web/Gemfile.lock 
./web/config/database.yml 
./web/script/start 

而且任何其他文件應該在這裏。

請使用chmod +xstart文件可執行。

最後,運行docker-compose up

+0

我改變了命令'/ MYAPP /腳本/ start'並刪除了'ADD。/myapp'行來自Dockerfile,但錯誤仍然相同。進行修改後,我運行了'docker-compose build'和'docker-compose up',還有什麼我需要運行的? – stuartbates

+0

你有這個'/ script/start'文件嗎?內容是什麼?如果你不大可能刪除這個命令行。 –

+0

感謝您的回覆 - 我做的內容很簡單:http://pastebin.com/B5P03je3 – stuartbates