创建使用 yarn 链接的项目的 docker 镜像
Posted
技术标签:
【中文标题】创建使用 yarn 链接的项目的 docker 镜像【英文标题】:Create docker image of project that uses yarn link 【发布时间】:2021-11-15 01:04:52 【问题描述】:在我的 NextJS 项目中,我使用 yarn 作为包管理器,并决定使用 yarn link 来导入别名/绝对导入。这是 yarn 的一个简洁功能,如果您使用 yarn,推荐使用别名的方法。然而,在我实现之后,我的 docker 镜像创建脚本坏了。映像创建在第 6 步失败,这是实际的构建。如果我运行yarn dev
或yarn build
,一切都很好,但 docker 似乎并不理解我正在使用别名。这是我运行输出的脚本:
脚本:docker build --pull --rm -f dockerfile -t my-ui . && docker run -d --name my-ui -p 80:80 my-ui
输出:
=> CACHED [builder 1/6] FROM docker.io/library/node:10-alpine@sha256:dc98dac24efd4254f75976c40bce46944697a110d06ce7fa47e726847 0.0s
=> [internal] load build context 4.7s
=> => transferring context: 2.46MB 4.6s
=> [builder 2/6] COPY package.json yarn.lock ./ 0.1s
=> [builder 3/6] RUN yarn install --ignore-engines && mkdir /my-ui && mv ./node_modules ./my-ui 364.1s
=> [builder 4/6] WORKDIR /my-ui 0.0s
=> [builder 5/6] COPY . . 15.2s
=> ERROR [builder 6/6] RUN yarn run build
我得到的错误如下:Type error: Cannot find module 'style/icons/More' or its corresponding type declarations.
这发生在项目的第一个组件中。我搜索并在 yarn-link 和 docker 上一无所获。如何让docker明白style/*
是一个别名,并且能够找到对应的模块?
【问题讨论】:
yarn link
用于开发用途,而不是用于生产包装(例如您正在做的事情)。
@AKX,感谢您提供的信息。我不知道。在这种情况下,如何进行?对我来说,拥有一个仅适用于开发并影响生产构建的别名框架是没有意义的。
docs for yarn link
tell you what it's for。无论哪种方式,下面的(仅链接)答案可能会有所帮助......
【参考方案1】:
在这种情况下我会避免使用yarn link
,因为它应该仅用于开发,而您可以使用webpack
别名。
https://teselagen.com/blog/a-better-alternative-to-npm-yarn-link-for-front-end
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于创建使用 yarn 链接的项目的 docker 镜像的主要内容,如果未能解决你的问题,请参考以下文章