2016-08-03 110 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/ 

两个说法可以提供根据不同的结果在那里你已经建立了图像,并在哪里启动容器。你应该检查你的撰写文件所映射的内容是否给出了相同的结果。