我正在尝试为一个苗条的应用程序创建一个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