跳到主要内容

使用 Docker 容器部署项目

使用 Docker 来部署项目可以省去环境配置的麻烦,最重要的是可以使用 k8s 进行大规模负载

以下简单介绍如何构建一个 zenweb Docker 镜像

在项目文件夹下创建文件 Dockerfile

Dockerfile
# 基础公用
FROM node:18-alpine AS base
WORKDIR /work
ENV YARN_GLOBAL_FOLDER /yarn
RUN corepack enable
COPY .yarnrc.yml yarn.lock ./

# 代码编译
FROM base AS builder
ARG VERSION
COPY package.json tsconfig.json ./
COPY src src
RUN npm version 1.0.0-$VERSION
RUN yarn && yarn run build

# 构建最终运行时镜像
FROM base AS runner
# 只复制运行时的必要文件
COPY --from=builder /work/package.json ./
COPY --from=builder /work/app app
# 下载生产依赖
RUN yarn workspaces focus --production
# 删除 yarn 产生的无用文件
RUN rm -f .yarnrc.yml .pnp.loader.mjs

# 设置默认环境变量
ENV APP_NAME=myweb
ENV NODE_ENV=production
ENV TZ=Asia/Shanghai

# 暴露服务端口
EXPOSE 7001

# 项目启动命令
CMD [ "yarn", "start" ]

执行构建命令构建镜像文件

docker build -t myweb .

测试镜像是否可以运行

docker run -it --rm --name myweb -p 7001:7001 myweb
# 按 Ctrl+C 结束