localhost_oa_based/Dockerfile

54 lines
2.0 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 遇到网络问题可以配置镜像加速https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
# FROM 表示设置要制作的镜像基于哪个镜像FROM指令必须是整个Dockerfile的第一个指令如果指定的镜像不存在默认会自动从Docker Hub上下载。
# 指定我们的基础镜像是nodelatest表示版本是最新, 如果要求空间极致可以选择lts-alpine
# 使用 as 来为某一阶段命名
FROM node:20-slim AS base
ENV PROJECT_DIR=/huaxin-admin \
DB_HOST=mysql \
APP_PORT=8001 \
PNPM_HOME="/pnpm" \
PATH="$PNPM_HOME:$PATH"
RUN corepack enable \
&& yarn global add pm2
# WORKDIR指令用于设置Dockerfile中的RUN、CMD和ENTRYPOINT指令执行命令的工作目录(默认为/目录)该指令在Dockerfile文件中可以出现多次
# 如果使用相对路径则为相对于WORKDIR上一次的值
# 例如WORKDIR /dataWORKDIR logsRUN pwd最终输出的当前目录是/data/logs。
# cd 到 /huaxin-admin
WORKDIR $PROJECT_DIR
COPY ./ $PROJECT_DIR
RUN chmod +x ./wait-for-it.sh
# set timezone
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' > /etc/timezone
# see https://pnpm.io/docker
FROM base AS prod-deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
FROM base AS build
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
RUN pnpm run build
# mirror acceleration
# RUN npm config set registry https://registry.npmmirror.com
# RUN pnpm config set registry https://registry.npmmirror.com
# RUN npm config rm proxy && npm config rm https-proxy
FROM base
COPY --from=prod-deps $PROJECT_DIR/node_modules $PROJECT_DIR/node_modules
COPY --from=build $PROJECT_DIR/dist $PROJECT_DIR/dist
# EXPOSE port
EXPOSE $APP_PORT
# 容器启动时执行的命令类似npm run start
# CMD ["pnpm", "start:prod"]
# CMD ["pm2-runtime", "ecosystem.config.js"]
ENTRYPOINT ./wait-for-it.sh $DB_HOST:$DB_PORT -- pm2-runtime ecosystem.config.js