Мне не удалось найти решение этой проблемы.
У меня 2 docker контейнеров. frontend
и api
. Обоим для сборки нужна папка и ее содержимое models
. Все эти файлы находятся в папке с именем Website, поэтому дерево будет выглядеть так:
Website:
-models
-api
-dockerfile
-frontend
-dockerfile
-docker-compose.yml
Я новичок в docker и считаю, что это должно быть настроено, мой dockerfile
внутри каталога api выглядит так:
FROM node:latest
RUN mkdir -p /usr/src/app/models
WORKDIR /usr/src/app
COPY ./api/package*.json ./
RUN npm install
COPY ./api/ /usr/src/app
EXPOSE 3000
EXPOSE 3001
CMD [ "npm", "start" ]
Это приводит к созданию 2 models
папок сбоку от контейнера docker, одна из которых не содержит файлов, расположенных по пути (это то место, где я хочу мое содержимое):
root@0aa4496c9077:/usr/src/app/models#
и еще одна папка, которая содержит контент, который я хочу, но он находится по адресу:
root@0aa4496c9077:/usr/src/app/src/models#
Мой вопрос: как мне сопоставить папка и содержимое из каталога веб-сайта в каталог контейнера docker /usr/src/app/models
?
мой фактический файл docker -compose.yml выглядит следующим образом:
version: "3"
services:
api:
container_name: api
restart: always
build:
context: ./
dockerfile: ./api/dockerfile
ports:
- "3000:3000"
- "3001:3001"
volumes:
- ./models:./models
links:
- mongo
I пытались изменить путь к томам на абсолютный, например:
volumes:
- $PWD/models:/usr/src/app/models
, но безуспешно: (
Результат сборки при запуске docker-compose build
:
mongo uses an image, skipping
Building api
Step 1/8 : FROM node:latest
latest: Pulling from library/node
Digest: sha256:521df806339e2e60dfdee6e00e75656e69798c141bd2cff88c0c9a9c50ad4de5
Status: Downloaded newer image for node:latest
---> 4495f296c63b
Step 2/8 : WORKDIR /usr/src/app
---> Using cache
---> 94f87a509559
Step 3/8 : COPY ./api/package*.json ./
---> Using cache
---> 3c2e8c17ebf5
Step 4/8 : RUN npm install
---> Using cache
---> 90dc7d21af18
Step 5/8 : COPY ./api/ /usr/src/app
---> 5fa3a2b219ef
Step 6/8 : EXPOSE 3000
---> Running in 6ad5fbea1ed8
Removing intermediate container 6ad5fbea1ed8
---> b2f8f2f9129c
Step 7/8 : EXPOSE 3001
---> Running in 2342665c8da3
Removing intermediate container 2342665c8da3
---> 9f1162670b55
Step 8/8 : CMD [ "npm", "start" ]
---> Running in fc9d766bd5c1
Removing intermediate container fc9d766bd5c1
---> a7267b99b3c2
Successfully built a7267b99b3c2
Successfully tagged website_api:latest
Большое спасибо за любую помощь