Docker: не удалось найти скопированный файл в контейнере - PullRequest
0 голосов
/ 21 февраля 2020

Что я делаю не так?

Я хочу скопировать файл default.conf в мой контейнер.

Для этого у меня есть файл docker с COPY default.conf /opt/default.conf

Файл default.conf находится в том же каталоге, что и мой dockerfile

Когда я запускаю dockerfile, он говорит:

Шаг 3/9: COPY default.conf / opt / default .conf

---> 6529590ff51e

НО, когда я go в контейнер с docker exec -it [container-id] /bin/sh

Нет default.conf

Dockerfile:

### STAGE 1: Build ###
FROM node:alpine AS build
WORKDIR /usr/src/app
COPY default.conf /opt/default.conf
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build

### STAGE 2: Run ###
FROM nginx:alpine
COPY --from=build /usr/src/app/dist/proj /usr/share/nginx/html

My docker build:

docker build --rm -t test-application90:latest 

My docker выход сборки:

Sending build context to Docker daemon  534.9MB
Step 1/9 : FROM node:alpine AS build
 ---> b7dc3fe8d4f8
Step 2/9 : WORKDIR /usr/src/app
 ---> Using cache
 ---> 7694e6cef2f1
Step 3/9 : COPY default.conf /opt/
 ---> b8b59d09f29b
Step 4/9 : COPY package.json ./
 ---> d98bdcc549fa
Step 5/9 : RUN npm install
 ---> Running in 59b2f606a39c
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142

> core-js@3.6.0 postinstall /usr/src/app/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> core-js@2.6.11 postinstall /usr/src/app/node_modules/karma/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


> @angular/cli@9.0.3 postinstall /usr/src/app/node_modules/@angular/cli
> node ./bin/postinstall/script.js

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/watchpack/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.11: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/webpack-dev-server/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.11: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/karma/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.11: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN karma-jasmine-html-reporter@1.5.2 requires a peer of jasmine-core@>=3.5 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: abbrev@1.1.1 (node_modules/karma/node_modules/fsevents/node_modules/abbrev):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/abbrev' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.abbrev.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ansi-regex@2.1.1 (node_modules/karma/node_modules/fsevents/node_modules/ansi-regex):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/ansi-regex' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.ansi-regex.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: aproba@1.2.0 (node_modules/karma/node_modules/fsevents/node_modules/aproba):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/aproba' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.aproba.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: balanced-match@1.0.0 (node_modules/karma/node_modules/fsevents/node_modules/balanced-match):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/balanced-match' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.balanced-match.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: chownr@1.1.3 (node_modules/karma/node_modules/fsevents/node_modules/chownr):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/chownr' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.chownr.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: code-point-at@1.1.0 (node_modules/karma/node_modules/fsevents/node_modules/code-point-at):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/code-point-at' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.code-point-at.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: concat-map@0.0.1 (node_modules/karma/node_modules/fsevents/node_modules/concat-map):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/concat-map' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.concat-map.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: console-control-strings@1.1.0 (node_modules/karma/node_modules/fsevents/node_modules/console-control-strings):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/console-control-strings' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.console-control-strings.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: core-util-is@1.0.2 (node_modules/karma/node_modules/fsevents/node_modules/core-util-is):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/core-util-is' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.core-util-is.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: deep-extend@0.6.0 (node_modules/karma/node_modules/fsevents/node_modules/deep-extend):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/deep-extend' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.deep-extend.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: delegates@1.0.0 (node_modules/karma/node_modules/fsevents/node_modules/delegates):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/delegates' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.delegates.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: detect-libc@1.0.3 (node_modules/karma/node_modules/fsevents/node_modules/detect-libc):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/detect-libc' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.detect-libc.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fs.realpath@1.0.0 (node_modules/karma/node_modules/fsevents/node_modules/fs.realpath):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/fs.realpath' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.fs.realpath.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: has-unicode@2.0.1 (node_modules/karma/node_modules/fsevents/node_modules/has-unicode):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/has-unicode' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.has-unicode.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: inherits@2.0.4 (node_modules/karma/node_modules/fsevents/node_modules/inherits):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/inherits' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.inherits.DELETE'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: ini@1.3.5 (node_modules/karma/node_modules/fsevents/node_modules/ini):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/ini' -> '/usr/src/app/node_modules/karma/node_modules/fsevents/node_modules/.ini.DELETE'

added 1340 packages from 1102 contributors and audited 17568 packages in 33.895s

32 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Removing intermediate container 59b2f606a39c
 ---> bacc44946554
Step 6/9 : COPY . .
 ---> cbf30a550904
Step 7/9 : RUN npm run build
 ---> Running in 451c06e9bb0a

> proj@0.0.0 build /usr/src/app
> ng build


chunk {main} main.js, main.js.map (main) 104 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 165 kB [initial] [rendered]
chunk {polyfills-es5} polyfills-es5.js, polyfills-es5.js.map (polyfills-es5) 597 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.15 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 182 kB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 4.36 MB [initial] [rendered]
Date: 2020-02-21T13:05:54.311Z - Hash: cb71ed20199eb4ef3fee - Time: 8788ms
Removing intermediate container 451c06e9bb0a
 ---> 6a44a01d73f6
Step 8/9 : FROM nginx:alpine
 ---> 48c8a7c47625
Step 9/9 : COPY --from=build /usr/src/app/dist/proj /usr/share/nginx/html
 ---> Using cache
 ---> 387d470fb408
Successfully built 387d470fb408
Successfully tagged test-application90:latest

My docker run :

docker run --rm -d -p 90:80/tcp test-application90:latest

My docker run output:

be1814bc7cd89376e0a8477026f4b6e62dfe136fd1afd7eb3631a003fd95eb74

Мой список контейнеров с docker ps:

be1814bc7cd8        test-application90:latest     "nginx -g 'daemon of…"   1 second ago        Up Less than a second   0.0.0.0:90->80/tcp     admiring_mcclintock

My docker exe c:

docker exec -it be1814bc7cd8 /bin/sh

1 Ответ

1 голос
/ 21 февраля 2020

У вас многоэтапная сборка. Файл копируется во время сборки первого этапа, а второй этап не копирует этот файл в конечное изображение, поэтому он не должен быть там. Если вы хотите, чтобы файл был только на этапе nginx, скопируйте его на этом этапе:

### STAGE 1: Build ###
FROM node:alpine AS build
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build

### STAGE 2: Run ###
FROM nginx:alpine
COPY default.conf /opt/default.conf
COPY --from=build /usr/src/app/dist/proj /usr/share/nginx/html

Или, если вы хотите получить файл на первом этапе и на втором этапе, вы можете скопировать его из с первого на второй этап:

### STAGE 1: Build ###
FROM node:alpine AS build
WORKDIR /usr/src/app
COPY default.conf /opt/default.conf
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build

### STAGE 2: Run ###
FROM nginx:alpine
COPY --from=build /usr/src/app/dist/proj /usr/share/nginx/html
COPY --from=build /opt/default.conf /opt/default.conf
...