为了开发目的,需要“app / dist”作为卷的一部分时,不能在容器中生成“app / dist”

我有以下的Dockerfile:

COPY app /var/www/my-app # <<< "COPY" because, sadly, the volumes defined in "docker-compose.yml" aren't available WORKDIR /var/www/my-app RUN apt-get update && apt-get install -y \ && npm install \ # <<< this generates "my-app/node_modules" folder && npm run build:dynamic # <<< this generates "my-app/dist" folder WORKDIR /var/www/my-app/dist EXPOSE 8000 CMD ["node", "server.js"] 

这将需要有一个function,生产应用程序。

但是,在开发过程中,应用程序代码(因此,“dist”文件夹)经常变化。 所以,它也需要成为一个卷的一部分。 我已经在我docker-compose.yml文件中试过了:

 volumes: - ./app:/var/www/my-app 

但是,当容器开始使用docker docker-compose up ,我的容器中缺less“node_modules”和“dist”文件夹。 我没有任何可能的“dist”文件夹(既没有在./app:/var/www/my-app docker-compose build上生成,也没有在./app:/var/www/my-app卷中find的文件夹)

在线search,我find了这个解决scheme:

 volumes: - ./app:/var/www/my-app - /var/www/my-app/node_modules - /var/www/my-app/dist 

但是,如果我input容器,我所拥有的就是两个文件夹“my-app / node_modules”和“my-app / dist”。 没有其他文件应该在“我的应用程序/”下不存在。 这不会是一个问题,我只需要在开发“dist”文件夹 – 但我得到的“dist”文件夹是不是从“卷”! 这是由docker-compose build 。 所以这对发展没有帮助。 我需要volume中的“dist”文件夹,而不是docker-compose build上生成的“dist”文件夹。

在生产中,需要docker-compose build生成的“dist”文件夹。 但是,在开发过程中,我将需要作为卷的一部分的“dist”文件夹。 至于“node_modules”,这是特定的环境,当然,我总是需要在容器内部生成一个。 没关系。

我认为必须有一个解决scheme。 否则,我们不能在同一个项目中使用docker进行生产和开发。