我正在做一个用Astrojs建立的网页。作为前端开发人员,我是个新手,肯定不是Docker的完全专家,但是我当前的工作文件夹的大小是270 my,包括依赖项,但是当我构建码头映像时,它会达到1.32GB。
这是我的package.json以防有帮助
{
"name": "personalsite",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/image": "^0.5.1",
"@astrojs/svelte": "^1.0.0",
"@astrojs/tailwind": "^1.0.0",
"svelte": "^3.50.1",
"@fortawesome/free-brands-svg-icons": "^6.2.0",
"@fortawesome/free-solid-svg-icons": "^6.2.0",
"@tailwindcss/typography": "^0.5.7",
"astro": "^1.2.1",
"autoprefixer": "^10.4.8",
"daisyui": "^2.25.0",
"postcss": "^8.4.16",
"svelte-fa": "^3.0.3"
}
}这是我的DockerFile
FROM node:lts-alpine
ENV NODE_ENV=production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN yarn install
COPY . .
EXPOSE 3000
RUN chown -R node /usr/src/app
USER node
CMD ["yarn", "run", "start", "--host"]我甚至用过Node.js的高寒图像,但它对我来说还是那么大。你知道这里有什么问题吗?
编辑:我跟踪了评论中用户的提示,得到了一个多阶段的文档,但是图像大小还是有点大吗?现在它的大小是654 in。
我知道这是一个很大的改进,但我仍然很困惑,因为它的源代码是60 in大小的(它只是一个带有几个动画的小型个人porfolio站点),怎么会这么大呢?
这是新更新的文件,我漏掉了什么吗?
FROM node:lts as builder
ENV NODE_ENV=production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN yarn install --silent --production=true --frozen-lockfile
COPY . .
FROM node:lts-slim
# I used slim because there were people online who recommended to not
# mix and match distros and lts-alpine uses a different linux distro
WORKDIR /usr/src/app
COPY --from=builder /usr/src/app /usr/src/app
EXPOSE 3000
RUN chown -R node /usr/src/app
USER node
CMD ["yarn", "run", "start", "--host"]发布于 2022-09-26 09:31:31
我意识到,对于我的用例,我只想要astro build的输出,它是一堆带有某些部分javascript的静态html文件,因为我没有启用服务器端呈现。
我刚刚将Dockerfile完全修改为以下内容,现在它非常小,只有9.81MB
# ---> Build stage
FROM node:18-bullseye as node-build
ENV NODE_ENV=production
WORKDIR /usr/src/app
COPY . /usr/src/app/
RUN yarn install --silent --production=true --frozen-lockfile
RUN yarn build --silent
# ---> Serve stage
FROM nginx:stable-alpine
COPY --from=node-build /usr/src/app/dist /usr/share/nginx/htmlhttps://stackoverflow.com/questions/73764913
复制相似问题