2016-08-03 71 views
0

這是我Dockerfile:獲取代碼

FROM node:4 
RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 
COPY code/* /usr/src/app/ 
EXPOSE 3000 
VOLUME /usr/src/app/ 

我的碼頭工人撰寫文件:

version: '2.0' 
services: 
    my_service: 
    build: . 
    volumes: 
     - ./app:/usr/src/app 
    ports: 
     - 8102:3000 
    working_dir: /usr/src/app/ 
    command: node src/app.js 
    restart: always 

當我做編譯:

docker-compose build 

Building api_core 
Step 1 : FROM node:4 
---> 93b396996a16 
Step 2 : RUN mkdir -p /usr/src/app 
---> Using cache 
---> e1ee4fd2245d 
Step 3 : WORKDIR /usr/src/app 
---> Using cache 
---> 8824a653a9e4 
Step 4 : COPY code/* /usr/src/app/ 
---> Using cache 
---> 5e4ee9901369 
Step 5 : EXPOSE 3000 
---> Using cache 
---> 0e10126e1651 
Step 6 : VOLUME /usr/src/app/ 
---> Using cache 
---> c1f9d36d91bc 
Successfully built c1f9d36d91bc 

當我運行我得到這個錯誤:

docker-compose up 

Error: Cannot find module '/usr/src/app/src/app.js 

因此,Docker告訴我,它沒有找到app.js,所以它就像COPY不工作!

+0

您是否嘗試過運行您創建的碼頭鏡像並檢查此路徑是否存在? –

回答

2

你是對的,你複製你的應用程序在你的泊塢窗圖像。

但是,在您的泊塢窗撰寫部分中,您安裝了- ./app:/usr/src/app,以便在您的「./app」文件夾(在主機上)中的所有內容都安裝在/ usr/src/app的docker容器中, dockerfile被掛載點覆蓋。

+0

通過使用這個我想將代碼掛載到外部存儲。那我怎麼辦? – 4m1nh4j1

+0

如果/ usr/src/app爲空,您可以選擇將數據放入文件夾(/ usr/src/originalapp)和cp/usr/src/originalapp/usr/src/app –

1

你被明確在撰寫文件中指定的卷映射:

volumes: 
    - ./app:/usr/src/app 

這將覆蓋你以前在Dockerfile註明:

COPY code/* /usr/src/app/ 

兩個說法可以提供根據不同的結果在那裏你已經建立了圖像,並在哪裏啓動容器。你應該檢查你的撰寫文件所映射的內容是否給出了相同的結果。