首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的码头形象为AstroJS应用这么大?

为什么我的码头形象为AstroJS应用这么大?
EN

Stack Overflow用户
提问于 2022-09-18 17:20:27
回答 1查看 152关注 0票数 0

我正在做一个用Astrojs建立的网页。作为前端开发人员,我是个新手,肯定不是Docker的完全专家,但是我当前的工作文件夹的大小是270 my,包括依赖项,但是当我构建码头映像时,它会达到1.32GB。

这是我的package.json以防有帮助

代码语言:javascript
复制
{
  "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

代码语言:javascript
复制
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站点),怎么会这么大呢?

这是新更新的文件,我漏掉了什么吗?

代码语言:javascript
复制
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"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-26 09:31:31

我意识到,对于我的用例,我只想要astro build的输出,它是一堆带有某些部分javascript的静态html文件,因为我没有启用服务器端呈现。

我刚刚将Dockerfile完全修改为以下内容,现在它非常小,只有9.81MB

代码语言:javascript
复制
# ---> 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/html
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73764913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档