我有以下docker文件(位于底部)。我正在使用另一个图像来获取预编译的库(实用程序)并将其复制到新图像的路径中。然后我需要将该目录符号链接到我的node_modules目录中。这很好,我有3个地方我证明了这个问题。
ln -sf ...
最后我再次列出文件,现在我得到了
ls: /usr/src/app/node_modules/@boiler/utilities: No such file or directory
就像符号链接不会持久化一样。如果我使用shell运行容器:docker run -it --entrypoint=sh backend:latest
并创建符号链接,它就可以工作。
关于我的符号链接在哪里的任何想法?
FROM utilities-setup:latest as build
FROM node:8.5.0-alpine
COPY --from=build /utilities /utilities
RUN ls -l /utilities <-- 1. THIS WORKS, FILES EXIST
#setup directories
RUN mkdir -p /usr/src/app/node_modules/@boiler/
WORKDIR /usr/src/app
#create symlink to the utilities module into the boiler module
RUN ln -sf /utilities /usr/src/app/node_modules/@boiler/
RUN ls /usr/src/app/node_modules/@boiler/utilities <-- 2. THIS WORKS, FILES EXIST
#copy the content of the backend to the current direcotry
COPY . .
RUN yarn install
RUN ls /usr/src/app/node_modules/@boiler/utilities <-- 3. THIS FAILS, NO MODULE
RUN ["chmod", "+x", "./scripts/prod.sh"]
EXPOSE 8080
ENTRYPOINT ["/usr/src/app/scripts/prod.sh"]
答案 0 :(得分:0)
[查看评论]我提出了问题。 发生的是毛线安装正在重新创建node_modules目录,因此您必须在安装所有其他模块之后创建符号链接。我想是有道理的,但是我认为它会只写到已经存在的目录中