如何选择性地将锁定文件添加到 docker 容器?

How can I optionally add a lockfile to a docker container?

我正在尝试构建一个 docker 图像,在构建时可选择添加 yarn(或 npm 锁文件)。我想明确地添加它,但如果不包含它也不会使构建失败。

目的是在托管应用程序使用确定性构建过程时尊重它,而不是强制它这样做。我还想让应用程序使用此容器 bootstrap 自身进入确定性构建。

这是我的开头:

FROM node:8.12.0-alpine
USER node
WORKDIR ${my_workdir}
COPY --chown=node:node src/yarn.lock ./
COPY --chown=node:node src/package*.json ./
RUN yarn && yarn cache clean
COPY --chown=node:node src/ .
CMD []

如果 src/yarn.lock 文件不在文件系统上,是否有我可以使用的命令或选项来代替复制不会失败?

您可以尝试将 yarn.lock 添加为 yarn.lock* 以及另一个文件,这样 COPY 就不会失败。沿着这些路线的东西应该可以解决问题:

FROM node:8.12.0-alpine
USER node
WORKDIR ${my_workdir}
COPY --chown=node:node src/package*.json src/yarn.lock* ./
RUN yarn && yarn cache clean
COPY --chown=node:node src/ .
CMD []

希望对您有所帮助!