2017-01-10 1 views
0

Docker에 장착 할 때 문제가 있습니다. 사진을 저장하고 프런트 엔드에 반환하기 만하면됩니다.docker가 파일을 마운트 된 디렉토리에 복사하지 않은 이유는 무엇입니까?

FROM node:boron 

WORKDIR /app 
COPY . . 
RUN npm install --production 

RUN mkdir -p /app/public 
VOLUME ["/app/public"] 

CMD yum install imagemagick 
# if we don't use this specific form, SIGINT/SIGTERM doesn't get forwarded 
CMD node server.js 

내가 skyliner.io로 배포하고 있습니다 :

는 dockerfile이다. 검사 내 이미지 내가 얻을 :

$ docker volume ls 
DRIVER    VOLUME NAME 
local  2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53 

또한

$ docker volume inspect 2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53 

[ 
    { 
     "Name": "2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53", 
     "Driver": "local", 
     "Mountpoint": "/var/lib/docker/volumes/2fe327f9a9d82d7ddad72e8d9dcda76e3212653e100c24453de9edbbf60fbe53/_data", 
     "Labels": null 
    } 
] 

그럴 용기에 프로젝트를 실행 - 모든 좋은 일이, 파일을 저장합니다

[ 
    { 
     "Id": "sha256:598085445f82a8324f41842a7ac4f93a55b009d93bfaf07e7ce7b8a4bc5918d9", 
     "RepoTags": [ 
      "thurst-back-end:latest" 
     ], 
     "RepoDigests": [], 
     "Parent": "", 
     "Comment": "", 
     "Created": "2017-01-09T16:05:50.958866532Z", 
     "Container": "85457fb45353305715ea72297187fd6b88a019aa369426428c536a6a80450206", 
     "ContainerConfig": { 
      "Hostname": "45f28166fed1", 
      "Domainname": "", 
      "User": "", 
      "AttachStdin": false, 
      "AttachStdout": false, 
      "AttachStderr": false, 
      "Tty": false, 
      "OpenStdin": false, 
      "StdinOnce": false, 
      "Env": [ 
       "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 
       "NPM_CONFIG_LOGLEVEL=info", 
       "NODE_VERSION=6.9.4" 
      ], 
      "Cmd": [ 
       "/bin/sh", 
       "-c", 
       "#(nop) CMD [\"/bin/sh\" \"-c\" \"node server.js\"]" 
      ], 
      "ArgsEscaped": true, 
      "Image": "sha256:64249ddf0e9111ef191b1fb02d1af3ae2c7735f0509169a8e5fa6bc980a463ba", 
      "Volumes": { 
       "/app/public": {} 
      }, 
      "WorkingDir": "/app", 
      "Entrypoint": null, 
      "OnBuild": [], 
      "Labels": {} 
     }, 
     "DockerVersion": "1.11.2", 
     "Author": "", 
     "Config": { 
      "Hostname": "45f28166fed1", 
      "Domainname": "", 
      "User": "", 
      "AttachStdin": false, 
      "AttachStdout": false, 
      "AttachStderr": false, 
      "Tty": false, 
      "OpenStdin": false, 
      "StdinOnce": false, 
      "Env": [ 
       "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 
       "NPM_CONFIG_LOGLEVEL=info", 
       "NODE_VERSION=6.9.4" 
      ], 
      "Cmd": [ 
       "/bin/sh", 
       "-c", 
       "node server.js" 
      ], 
      "ArgsEscaped": true, 
      "Image": "sha256:64249ddf0e9111ef191b1fb02d1af3ae2c7735f0509169a8e5fa6bc980a463ba", 
      "Volumes": { 
       "/app/public": {} 
      }, 
      "WorkingDir": "/app", 
      "Entrypoint": null, 
      "OnBuild": [], 
      "Labels": {} 
     }, 
     "Architecture": "amd64", 
     "Os": "linux", 
     "Size": 700375224, 
     "VirtualSize": 700375224, 
     "GraphDriver": { 
      "Name": "overlay", 
      "Data": { 
       "RootDir": "/var/lib/docker/overlay/739c2f7ee799c2ec0e75beb02c24c084aa9545fa6f1680b6a65062bf5d6133e8/root" 
      } 
     }, 
     "RootFS": { 
      "Type": "layers", 
      "Layers": [ 
       "sha256:b6ca02dfe5e62c58dacb1dec16eb42ed35761c15562485f9da9364bb7c90b9b3", 
       "sha256:60a0858edcd5aad240966e33389850e4328de4cfb5282977eddda56bffc7f95f", 
       "sha256:53c779688d06353f7ba4fd7ce1d43ce146ad0278ebead0feea1846383c730024", 
       "sha256:0a5e2b2ddeaa749d95730bad9be3e3a472ff6f80544da0082a99ba569df34ff3", 
       "sha256:fa18e5ffd316beb0c4c929ea1fff8d559a73a366f30f1004bb06af3e9f800696", 
       "sha256:604c78617f347c58e4ce0021f47928b7df3d799ea7c5e9367fa5a800e473dc06", 
       "sha256:6a73c39a0ab65b5e2da69b9013fc7f50c8bf5be27c0cf5fb3b642a247a8993ca", 
       "sha256:b7ce32b271bee3f3c614232448a4308cdfc4a2bf6f8db1436f51cb74ae5c15dc", 
       "sha256:a276062d9f56b85bf34797301d74b761970c3e6ce0ccd3525f4535e675a0974e", 
       "sha256:2f616e13f894a3a5c4dc33cbbcce345c51a704d56a70396cacdfb2e96e2ff9df", 
       "sha256:c6dfd7a877dba2837cc46e906cde9aa6e1cc5f89c9c65cefa81f130d59e2c7ac" 
      ] 
     } 
    } 
] 

다음 명령은 문제를 이해하기 /public/images/:id/:id-user.jpg.

그러나 도커에서 프로젝트를 실행하면 파일은 /var/lib/docker/overlay/0a2bdfae85072dce01e470eb71f1199ab23d90eb6f9e573d6a65e06d3d387cce/upper/app/public/images에 있습니다.

+0

직접 질문에 관련하지,하지만 찾고 당신의 dockerfile에서, 당신은 하나의'CMD' 만 정의 할 수 있습니다; 하지만 너는 둘이야. 나는 첫 번째 것이'RUN'으로되어 있다고 생각합니다. –

+0

어쩌면 당신은 맞습니다. 그러나 나를 위해 모든 명령이 작동합니다 –

답변

0

확실하지는 모르겠지만 앱이 경로/공개에 글을 쓸 수 있습니까? 당신이 컨테이너에 있지 실행할 때 말

, 당신은 /public/images/... 얻을 수 있지만, 볼륨은 다른 경로 /app/public이며, 따라서 당신은 컨테이너 볼륨으로 쓰기 ..

+0

"public"폴더에 폴더를 만들면 볼 수 없습니까? 그러나 다른 폴더에 저장된 폴더와 파일은 모두/var/lib/docker/overlay/0a2bdfae85072dce01e470eb71f1199ab23d90eb6f9e573d6a65e06d3d387cce/upper/app/public/images –

+0

'docker exec -it bash'를 실행하여 파일 시스템을 내부에서 검사하고 파일을 확인하십시오 실제로 내부에 존재/응용 프로그램/공공 ... –

+0

나는 파일이 '고정 표시기 간부가 fc701a4b6ccf bash는 루트 @ IP-10-17-166-10 - 그것은 발견/응용 프로그램 # 1!을 Dockerfile 응용 프로그램 설정 node_modules package.json 공개 서버 .js 루트 @ ip-10-17-166-10 :/app # cd 공개/ 루트 @ ip-10-17-166-10 :/app/publiC# ls 이미지 루트 @ ip- 10-17-166-10 :/app/publiC# cd 이미지 루트 @의 IP-10-17-166-10 :/응용 프로그램/공공/이미지 # 1! 586d0939896425074cf2ae95 58715886919cfc0600f64a21 5874a14246a4c105009a13d0' –

관련 문제