使用rollup的纱线构建挂在docker构建过程中



我正在尝试为一个苗条的应用程序创建一个docker映像。我使用的苗条应用程序只是TypeScript启动的苗条模板。我没有对应用程序本身进行任何更改,我唯一的目标是使用Docker为苗条的应用程序服务。我使用yarn berry(v2(作为我的包管理器,并使用rollupjs进行构建过程。这是我的第一个问题,如果有什么遗漏,请告诉我。

我期望图像被构建,但是当构建过程达到";纱线构造";命令,它永远不会完成。它也没有崩溃,但也从未完成构建步骤。它似乎停留在捆绑步骤:

=> => # src/main.ts → public/build/bundle.js... 

package.json中的build命令:"build": "rollup -c"

我的Dockerfile最初是从这里获取的:https://sveltesociety.dev/recipes/publishing-and-deploying/dockerize-a-svelte-app/.然而,我不得不对yarn v2进行一些更改,我发现了以下堆栈线程:在Docker映像中使用yarn 2(Berry(进行包装应用程序。添加一些修改表单给我留下了以下Dockerfile:


WORKDIR /app
COPY package.json ./
RUN yarn set version berry
COPY .yarn ./.yarn
COPY yarn.lock .yarnrc.yml ./
RUN yarn plugin import workspace-tools
RUN yarn workspaces focus -A --production
COPY . ./
RUN yarn build   # This is where it gets stuck
FROM nginx:1.19-alpine
COPY --from=build /app/public /usr/share/nginx/html

我运行命令docker build -t svelte-image .来构建,这是我得到的输出:

[+] Building 572.6s (16/18)                                                                                                                
=> [internal] load build definition from Dockerfile                                                                                  0.0s
=> => transferring dockerfile: 37B                                                                                                   0.0s
=> [internal] load .dockerignore                                                                                                     0.0s
=> => transferring context: 34B                                                                                                      0.0s
=> [internal] load metadata for docker.io/library/nginx:1.19-alpine                                                                  1.2s
=> [internal] load metadata for docker.io/library/node:12                                                                            1.1s
=> CACHED [stage-1 1/2] FROM docker.io/library/nginx:1.19-alpine@sha256:07ab71a2c8e4ecb19a5a5abcfb3a4f175946c001c8af288b1aa766d67b0  0.0s
=> CACHED [build 1/6] FROM docker.io/library/node:12@sha256:cc4adb82efc04b74b9f96326e682ad04be2df84d23e40609802eb6d6c207abde         0.0s
=> [internal] load build context                                                                                                     0.1s
=> => transferring context: 69.58kB                                                                                                  0.0s
=> CACHED [stage-1 2/3] RUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf                                                  0.0s
=> CACHED [build  2/10] WORKDIR /app                                                                                                 0.0s
=> CACHED [build  3/10] COPY package.json ./                                                                                         0.0s
=> CACHED [build  4/10] RUN yarn set version berry                                                                                   0.0s
=> [build  5/10] COPY .yarn ./.yarn                                                                                                  0.2s
=> [build  6/10] COPY yarn.lock .yarnrc.yml ./                                                                                       0.0s
=> [build  7/10] RUN yarn plugin import workspace-tools                                                                              1.5s
=> [build  8/10] RUN yarn workspaces focus -A --production                                                                           0.5s
=> [build  9/10] COPY . ./                                                                                                           0.1s 
=> [build 10/10] RUN yarn build                                                                                                    568.9s 
=> => # src/main.ts → public/build/bundle.js... # -> Never completes

我一直在试图弄清楚构建挂起的原因,但我找不到错误的来源。当使用纱线构建本地构建时,它工作得很好。有人知道它为什么挂在捆绑过程中吗?

我不知道出了什么问题,但我成功地构建了docker映像并运行了它。这是正在工作的Dockerfile:

FROM node:16 AS build
WORKDIR /app
COPY package.json ./
RUN yarn set version berry
COPY .yarn ./.yarn  # 
COPY yarn.lock .yarnrc.yml ./
RUN yarn install
# These two lines are from the original example. It did not work to use this,
# but I leave it here to highlight the difference
## RUN yarn plugin import workspace-tools
## RUN yarn workspaces focus -A --production
COPY . ./
RUN yarn build
FROM nginx:1.19-alpine
COPY --from=build /app/public /usr/share/nginx/html

最新更新