Skip to content

Commit 170ba59

Browse files
committed
WIP: restore deploy pipe line
1 parent 23395f6 commit 170ba59

26 files changed

+81
-338
lines changed

apps/cron/Dockerfile

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
FROM node:18-alpine AS base
1+
FROM node:20.12.0-alpine AS base
2+
RUN apk update
3+
RUN apk add --no-cache libc6-compat
24

35
RUN corepack enable
46

57
ENV PNPM_HOME="/pnpm"
68
ENV PATH="$PNPM_HOME:$PATH"
79

8-
RUN pnpm install -g prisma
10+
RUN pnpm add -g turbo prisma
911

1012
ARG DOCKER_ENV
1113
ENV DOCKER_ENV=${DOCKER_ENV}
@@ -17,26 +19,39 @@ ENV AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
1719
ARG AWS_SECRET_ACCESS_KEY
1820
ENV AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
1921

20-
ENV APP_DIR="packages/velog-cron"
22+
ENV APP_DIR="apps/cron"
2123

22-
WORKDIR /app/${APP_DIR}
24+
WORKDIR /app
25+
26+
FROM base AS pruner
27+
COPY . .
28+
RUN turbo prune cron --docker
2329

24-
COPY ./package*.json /app
25-
COPY ./pnpm-*.yaml /app
26-
COPY ./${APP_DIR} /app/${APP_DIR}
30+
FROM base As builder
31+
COPY --from=pruner /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
32+
COPY --from=pruner /app/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
33+
COPY --from=pruner /app/out/json/ ./
34+
COPY --from=pruner /app/out/full/ .
2735

2836
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
29-
# TODO: prisma를 모듈로 import 하도록 변경해야함, turborepo 도입 이후에 변경 할 것
30-
RUN pnpm prisma generate
3137

32-
FROM base As builder
33-
RUN pnpm ssm pull -e ${DOCKER_ENV}
34-
RUN pnpm build:prod
38+
RUN pnpm --filter @packages/database prisma:generate
39+
RUN pnpm --filter cron ssm pull -e ${DOCKER_ENV}
40+
RUN turbo build:prod
3541

3642
FROM base As runner
43+
COPY --from=builder /app/package*.json .
44+
COPY --from=builder /app/pnpm-*.yaml .
45+
COPY --from=builder /app/packages/ /app/packages
46+
47+
WORKDIR /app/${APP_DIR}
48+
3749
COPY --from=builder /app/${APP_DIR}/dist /app/${APP_DIR}/dist
50+
COPY --from=builder /app/${APP_DIR}/*.json .
3851
COPY --from=builder /app/${APP_DIR}/env /app/${APP_DIR}/env
3952

53+
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
54+
4055
EXPOSE 5003
4156

42-
CMD [ "pnpm", "start" ]
57+
CMD [ "pnpm", "start" ]

apps/cron/docker-compose.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
version: '3.9'
22
services:
3-
server:
3+
cron:
4+
container_name: velog-cron
45
build:
56
context: ../../
6-
dockerfile: ./packages/velog-cron/Dockerfile
7+
dockerfile: ./apps/cron/Dockerfile
78
args:
89
DOCKER_ENV: 'stage'
910
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
1011
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
11-
env_file:
12-
- ../../.env
1312
tty: true
1413
stdin_open: true
1514
ports:

apps/cron/package.json

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,11 @@
1818
"type": "module",
1919
"scripts": {
2020
"dev": "nodemon --watch './**/*.ts' --exec 'node --loader ts-paths-esm-loader' src/main.ts | pino-pretty",
21-
"stage": "pnpm ssm pull -e stage && DOCKER_ENV=stage pnpm start",
22-
"prod": "pnpm ssm pull -e production && DOCKER_ENV=production pnpm start",
21+
"start": "NODE_ENV=production node dist/src/main.mjs",
2322
"build": "tsc --project tsconfig.json && tsc-alias -p tsconfig.json",
2423
"build:prod": "tsc --project tsconfig.prod.json && tsc-alias -p tsconfig.prod.json",
25-
"start": "node dist/src/main.js",
26-
"prisma:copy": "tsx ./scripts/copyPrisma.ts",
27-
"prisma:generate": "prisma generate --schema='./prisma/velog-rds/schema.prisma'",
28-
"prisma:rm": "rm -rf ./prisma",
2924
"create-service": "tsx ./scripts/createService.ts",
30-
"ssm": "tsx ./scripts/ssm/index.ts"
25+
"ssm": "tsx ./scripts/ssm.mts"
3126
},
3227
"dependencies": {
3328
"@packages/database": "workspace:*",

apps/cron/scripts/copyPrisma.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

apps/cron/scripts/entrypoint.sh

Lines changed: 0 additions & 12 deletions
This file was deleted.

apps/cron/scripts/ssm.mts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { SSMScript } from '@packages/common-scripts'
2+
3+
const ssm = new SSMScript({ packageName: 'cron' })
4+
ssm.excute()

apps/cron/scripts/ssm/README.md

Lines changed: 0 additions & 43 deletions
This file was deleted.

apps/cron/scripts/ssm/index.ts

Lines changed: 0 additions & 189 deletions
This file was deleted.
File renamed without changes.

apps/cron/src/common/plugins/globals/checkApiKeyPlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ENV } from '@env'
1+
import { ENV } from 'src/env.mjs'
22
import { UnauthorizedError } from '@errors/UnauthorizedError.js'
33
import { FastifyPluginCallback } from 'fastify'
44

apps/cron/src/common/plugins/globals/corsPlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { FastifyPluginCallback } from 'fastify'
2-
import { ENV } from '@env'
2+
import { ENV } from 'src/env.mjs'
33
import cors from '@fastify/cors'
44
import { ForbiddenError } from '@errors/ForbiddenError.js'
55

apps/cron/src/common/plugins/globals/cronPlugin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { GenerateTrendingWritersJob } from '@jobs/GenerateTrendingWritersJob.js'
55
import { DeleteFeedJob } from '@jobs/DeleteFeedJob.js'
66
import { FastifyPluginCallback } from 'fastify'
77
import { container } from 'tsyringe'
8-
import { ENV } from '@env'
8+
import { ENV } from 'src/env.mjs'
99
import { CheckSpamPostJob } from '@jobs/CheckSpamPostJob.js'
1010

1111
const cronPlugin: FastifyPluginCallback = async (fastfiy, opts, done) => {

0 commit comments

Comments
 (0)