docker-无法更改卷目录

时间:2020-08-02 04:26:21

标签: docker docker-compose dockerfile

我没有运气去寻找解决方案。

我有2个Docker容器。 frontendapi。两者都需要一个文件夹及其内容models来构建。 所有这些文件都位于一个名为Website的文件夹中,因此该树看起来像:

Website:
 -models
 -api
   -dockerfile
 -frontend
   -dockerfile
 -docker-compose.yml

我对docker非常陌生,并且相信这是应该如何设置的,我在api目录中的dockerfile就像这样:

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" ]

这将在docker容器的一侧创建2个models文件夹,其中一个文件夹不包含位于路径的文件(这是我想要的内容):

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

我尝试将卷路径更改为绝对路径,例如:

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

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

使用./models:./models而不使用$PWD,应该可以使用。

./models被解释为相对于Compose文件的位置。

无需提供绝对路径,只需相对路径和docker-compose即可解决。