34 lines
685 B
Docker
34 lines
685 B
Docker
|
# ベースイメージとしてnodeを使用
|
||
|
FROM node:20-alpine AS base
|
||
|
|
||
|
FROM base AS builder
|
||
|
|
||
|
RUN apk add --no-cache libc6-compat
|
||
|
WORKDIR /app
|
||
|
|
||
|
COPY package*.json tsconfig.json ./
|
||
|
COPY src ./src
|
||
|
COPY public ./public
|
||
|
|
||
|
RUN npm ci && \
|
||
|
npm run build && \
|
||
|
npm prune --production
|
||
|
|
||
|
FROM base AS runner
|
||
|
WORKDIR /app
|
||
|
|
||
|
RUN addgroup --system --gid 1001 nodejs
|
||
|
RUN adduser --system --uid 1001 hono
|
||
|
|
||
|
COPY --from=builder /app/node_modules /app/node_modules
|
||
|
COPY --from=builder /app/dist /app/dist
|
||
|
COPY --from=builder /app/public /app/public
|
||
|
COPY --from=builder /app/package.json /app/package.json
|
||
|
|
||
|
RUN chown -R hono:nodejs /app
|
||
|
|
||
|
USER hono
|
||
|
EXPOSE 3000
|
||
|
|
||
|
CMD ["node", "/app/dist/index.js"]
|